Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/SitetreeGenerator.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/SitetreeGenerator.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/SitetreeGenerator.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/SitetreeGenerator.java Tue Sep 9 17:30:20 2008
@@ -12,7 +12,6 @@
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.excalibur.source.SourceValidity;
-import org.apache.lenya.cms.content.Content;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.util.Globals;
@@ -48,30 +47,34 @@
* Setup the file generator. Try to get the last modification date of the source for caching.
*/
public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) throws ProcessingException, SAXException, IOException {
+ if(null == src) src = "";
super.setup(resolver, objectModel, src, par);
try{
PageEnvelope envelope;
Publication pub = Globals.getPublication();
- String language = "en";
+ if(null == pub){ throw new ProcessingException("SitetreeGenerator.setup: No Publication."); }
+ String language = FlatContent.LANGUAGE_DEFAULT;
try{
envelope = PageEnvelope.getCurrent();
language = envelope.getDocument().getLanguage();
}catch(org.apache.lenya.cms.publication.PageEnvelopeException pee){
- System.out.println("Sitetree Generator: could not use PageEnvelope.");
- throw new ProcessingException("Sitetree Generator: could not use PageEnvelope.");
+ System.out.println("SitetreeGenerator.setup: Could not use PageEnvelope.");
+ throw new ProcessingException("SitetreeGenerator.setup: Could not use PageEnvelope.");
}
- // Lenya-1.3
- if(pub.getContentType().equalsIgnoreCase(Content.TYPE_FLAT)){
- this.inputSource = super.resolver.resolveURI(pub.getContent().getIndexFilename(src, language));
+ File indexFile;
+ if(pub.getContentType().equalsIgnoreCase(FlatContent.TYPE)){
+ // Flat Content
+ // NOTE: Using Oresolver.resolveURI(getIndexFilename()) fails. Must create File first.
+ indexFile = new File(pub.getContent().getIndexFilename(src, language));
+ // System.out.println("SitetreeGenerator setup src=" + src + " " + (indexFile.exists() ? "exists" : "does not exist") + "\nFILE=" + indexFile.getAbsolutePath());
}else{
- // Lenya-1.2 Hierarchical Content
- File testfile = new File(pub.getContentDirectory(), src + File.separator + "sitetree.xml");
- if(!testfile.exists())
- testfile = new File(pub.getContentDirectory(), "live" + File.separator + "sitetree.xml");
- this.inputSource = super.resolver.resolveURI(testfile.getPath());
+ // Hierarchical Content
+ indexFile = new File(pub.getContentDirectory(), src + File.separator + "sitetree.xml");
+ if(!indexFile.exists()) indexFile = new File(pub.getContentDirectory(), "live" + File.separator + "sitetree.xml");
}
+ this.inputSource = super.resolver.resolveURI(indexFile.getPath());
}catch(SourceException se){
- throw SourceUtil.handle("Error during resolving of '" + src + "'.", se);
+ throw SourceUtil.handle("SitetreeGenerator SourceException resolving '" + src + "'.", se);
}
}
/**
@@ -94,6 +97,7 @@
* Generate XML data.
*/
public void generate() throws IOException, SAXException, ProcessingException {
+ // System.out.println("SitetreeGenerator.generate");
try{
if(getLogger().isDebugEnabled()){
getLogger().debug("Source " + super.source + " resolved to " + this.inputSource.getURI());
@@ -103,41 +107,4 @@
SourceUtil.handleSAXException(this.inputSource.getURI(), e);
}
}
- // DEV
- // private void showMap(Map map) {
- // System.out.println("%%% MAP BEGIN %%%");
- // Set keys = map.keySet();
- // Iterator iterator = keys.iterator();
- // while(iterator.hasNext()){
- // Object key = iterator.next();
- // System.out.println(key + " = " + map.get(key));
- // }
- // System.out.println("%%% MAP END %%%");
- // }
- // private void showParameters(Parameters parameters) {
- // System.out.println("%%% PARAMETERS BEGIN %%%");
- // String[] names = parameters.getNames();
- // int nlength = names.length;
- // for(int i = 0; i < nlength; i++){
- // try{
- // System.out.println("PAR: " + names[i] + "=" + parameters.getParameter(names[i]));
- // }catch(org.apache.avalon.framework.parameters.ParameterException pe){
- // System.out.println("PAR: " + names[i] + " FAILURE");
- // }
- // }
- // System.out.println("%%% PARAMETERS END %%%");
- // }
- // private String getModuleID(String uri) throws MalformedURLException {
- // String module = "";
- // int pos = uri.indexOf("modules/");
- // if(pos > -1){
- // pos += "modules/".length();
- // int endpos = uri.indexOf("/", pos);
- // if(endpos > -1){
- // module = uri.substring(pos, endpos);
- // }else
- // module = uri.substring(pos);
- // }
- // return module;
- // }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/Module.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/Module.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/Module.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/Module.java Tue Sep 9 17:30:20 2008
@@ -1,5 +1,6 @@
package org.apache.lenya.cms.modules;
import java.io.File;
+import java.io.FileFilter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
@@ -19,12 +20,14 @@
*/
public abstract class Module {
public static final String MODULE_XML = "module.xml";
+ public static final String INDEX_FILE_SUFFIX = ".index"; // Start with period.
Set inheritList = new LinkedHashSet(); // String names of other Modules in this publication.
Map requiredList = new TreeMap(); // required Modules: id = reason
Map recommendedList = new TreeMap(); // recommended Modules: id = reason
Map optionalList = new TreeMap(); // optional Modules: id = reason
Map variables = new HashMap(); // nameString = valueString
Map files; // filename -> actual location as String (Better as File or Source?)
+ Map indexes = new HashMap(); // indexId -> Configuration
File moduleDirectory;
private String type = Content.TYPE_DEFAULT;
private String id;
@@ -43,9 +46,9 @@
this.moduleDirectory = moduleDirectory;
id = moduleDirectory.getName();
File configFile = new File(moduleDirectory, MODULE_XML);
+ DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+ Configuration config;
if(configFile.canRead()){
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- Configuration config;
try{
config = builder.buildFromFile(configFile);
id = config.getAttribute("id", id);
@@ -125,6 +128,16 @@
String key = publication + "." + module;
inheritList.add(key);
}
+ // Indexes
+ Configuration[] indexesConf = config.getChildren("index");
+ int numIndexes = indexesConf.length;
+ for(int vI = 0; vI < numIndexes; vI++){
+ Configuration index = indexesConf[vI];
+ // Get attributes
+ String indexId = index.getAttribute("id", "");
+ // System.out.println("Module: Found Index " + indexId);
+ if(0 < indexId.length()) indexes.put(indexId, index);
+ }
// Resource parents inherit after specified inheritance.
// Added from bottom to top: xml/xhtml/home inherits from xhtml then xml.
if(resource.length() > 0){
@@ -147,6 +160,28 @@
}catch(IOException e){
System.out.println("Module " + publicationId + "." + id + " has an IOException.\n" + e.getLocalizedMessage());
}
+ } // end if - read configuration
+ IndexFileFilter filter = new IndexFileFilter();
+ File[] indexFiles = moduleDirectory.listFiles(filter);
+ int numIndexFiles = indexFiles.length;
+ for(int vI = 0; vI < numIndexFiles; vI++){
+ File indexFile = indexFiles[vI];
+ // System.out.println("Module: Found Index File " + indexFile.getAbsolutePath());
+ try{
+ config = builder.buildFromFile(indexFile);
+ String indexId = config.getAttribute("id", indexFile.getName().split(INDEX_FILE_SUFFIX, 1)[0]);
+ if(1 > indexId.length()){
+ String filename = indexFile.getName();
+ indexId = filename.substring(0, filename.length() - INDEX_FILE_SUFFIX.length());
+ indexes.put(indexId, config);
+ }
+ }catch(ConfigurationException e){
+ System.out.println("Module " + publicationId + "." + id + " Index " + indexFile.getName() + " has a ConfigurationException.\n" + e.getLocalizedMessage());
+ }catch(SAXException e){
+ System.out.println("Module " + publicationId + "." + id + " Index " + indexFile.getName() + " has a SAXException.\n" + e.getLocalizedMessage());
+ }catch(IOException e){
+ System.out.println("Module " + publicationId + "." + id + " Index " + indexFile.getName() + " has an IOException.\n" + e.getLocalizedMessage());
+ }
}
}
public String getContentType() {
@@ -177,6 +212,7 @@
* @return
*/
public String getFile(String filename) {
+ // System.out.println("Module.getFile " + filename);
String ret = "";
// Check cache
if(files.containsKey(filename)){
@@ -187,6 +223,20 @@
ret = "";
}
}
+ // TODO: Check Design Resources without creating infinite loop.
+ // BUG WATCH: This function is called by FlatIndexer while initializing FlatContent. Infinite loop.
+ // Initialization only needs filename="."
+ // if((ret.length() < 1) && (0 < filename.length()) && !(".".equals(filename))){
+ // // Check Design Resources
+ // Publication publication = Globals.getPublication();
+ // if(FlatContent.TYPE.equalsIgnoreCase(publication.getContentType())){
+ // String unid = Globals.getDesignUnid(filename);
+ // // Cannot access Content during initialization.
+ // Resource resource = ((FlatContent) publication.getContent()).getDesignResource(unid);
+ // File file = new File(resource.getURI());
+ // if(file.exists()) ret = file.getAbsolutePath();
+ // }
+ // }
if(ret.length() < 1){
// Check this Module.
File file = new File(moduleDirectory, filename);
@@ -223,12 +273,10 @@
Iterator inherit = inheritList.iterator();
while(inherit.hasNext() && (ret.length() < 1)){
module = Modules.getModule((String) inherit.next(), type);
- if(null != module)
- ret = module.getVariable(parameterName);
+ if(null != module) ret = module.getVariable(parameterName);
}
}
- if(ret.length() > 0)
- variables.put(parameterName, ret);
+ if(ret.length() > 0) variables.put(parameterName, ret);
return ret;
}
/**
@@ -254,4 +302,17 @@
public String getPublicationId() {
return publicationId;
}
+ /**
+ *
+ * @return Map(indexId) = Configuration
+ */
+ public Map getIndexes() {
+ return indexes;
+ }
+ private class IndexFileFilter implements FileFilter {
+ public boolean accept(File file) {
+ if(!file.canRead()) return false;
+ return file.getName().toLowerCase().endsWith(INDEX_FILE_SUFFIX.toLowerCase());
+ }
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleInputModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleInputModule.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleInputModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleInputModule.java Tue Sep 9 17:30:20 2008
@@ -6,14 +6,16 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeException;
+import org.apache.lenya.cms.content.flat.FlatDesign;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.util.Globals;
/**
- * Retrieves Module Variables from publication.xconf and module.xml.
- *
- * Variables are specified as <module name="modulename"><variable name="{variablename}">{value}</variable></module>
+ * Retrieves Module Variables from publication.xconf and module.xml.<br>
+ * {module:module} returns current Module Id.<br>
+ * {module:unid:PathAsForModuleProtocol} returns the UNID for the specified Design Resource regardless of the Resource's existence.<br>
+ * Example: {module:unid:///myxml.xml} returns the Design Resource UNID for the myxml.xml file from the current Module.<br>
+ * <br>
+ * Other variables are specified as <module name="modulename"><variable name="{variablename}">{value}</variable></module>
*
* @author solprovider
* @since 1.3
@@ -24,6 +26,7 @@
*/
private String moduleId = "";
public Object getAttribute(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
+ // System.out.println("ModuleInputModule.getAttribute " + name);
if(getLogger().isDebugEnabled()){
getLogger().debug("Resolving [" + name + "]");
}
@@ -32,14 +35,11 @@
if(name.equalsIgnoreCase("module")){
return moduleId;
}
- // Module Variables
- PageEnvelope pe;
- try{
- pe = PageEnvelope.getCurrent();
- }catch(PageEnvelopeException e){
- throw new ConfigurationException("Resolving page envelope failed: ", e);
+ if(name.startsWith("unid:")){
+ return FlatDesign.getDesignUnid(name.substring(5));
}
- Publication pub = pe.getPublication();
+ // Module Variables
+ Publication pub = Globals.getPublication();
PublicationModules modules = pub.getModules();
return modules.getVariable(moduleId, name);
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleSourceFactory.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleSourceFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/ModuleSourceFactory.java Tue Sep 9 17:30:20 2008
@@ -14,8 +14,8 @@
import org.apache.excalibur.source.SourceUtil;
import org.apache.excalibur.source.URIAbsolutizer;
import org.apache.excalibur.source.impl.FileSource;
-import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.util.Globals;
/**
* 2000125: Integrated with org.apache.lenya.cms.modules
*
@@ -41,19 +41,15 @@
return new FileSource(location);
}
String uri = resolver.resolveURI("").getURI();
- String publication;
- Publication pub;
- try{
- PageEnvelope envelope = PageEnvelope.getCurrent();
- pub = envelope.getPublication();
- publication = pub.getId();
- }catch(org.apache.lenya.cms.publication.PageEnvelopeException pee){
- throw new MalformedURLException("ModuleSourceFactory PageEnvelopeException. Could not get Publication.");
+ Publication publication = Globals.getPublication();
+
+ String publicationId = "";
+ if(null != publication){
+ publicationId = publication.getId();
}
// Reset moduleInheritance
boolean needsReset = false;
- if(location.indexOf("::") != -1)
- needsReset = true;
+ if(location.indexOf("::") != -1) needsReset = true;
// Decide Usage
pos = location.indexOf(":///");
int endpos;
@@ -68,6 +64,7 @@
// This errors.
// Every Module must have a module.xmap (even if it is empty)!
String filepath = "module.xmap";
+ // TODO: Improve parsing using
if(pos != -1){ // module:/filepath/filename.ext
// Get current Module ID
filepath = location.substring(pos + 4);
@@ -90,7 +87,7 @@
pos += 2;
endpos = location.indexOf("/", pos);
if(endpos > 0){
- publication = location.substring(pos, endpos);
+ publicationId = location.substring(pos, endpos);
pos = endpos + 1;
endpos = location.indexOf("/", pos);
if(endpos > 0){
@@ -100,7 +97,7 @@
moduleId = location.substring(pos);
}
}else{
- publication = location.substring(pos);
+ publicationId = location.substring(pos);
}
}else{
// /filepath/filename.ext (Default protocol)
@@ -109,16 +106,12 @@
}
}
// Verify
- if(publication.length() < 1)
- throw new MalformedURLException("No Publication ID found.");
- if(moduleId.length() < 1)
- moduleId = getModuleID(uri);
+ if(publicationId.length() < 1) throw new MalformedURLException("No Publication ID found.");
+ if(moduleId.length() < 1) moduleId = getModuleID(uri);
// BUG ALERT: See description above about no default
- if(filepath.length() < 1)
- filepath = "module.xmap";
- String newlocation = pub.getModules().getFile(moduleId, filepath, needsReset);
- if(newlocation.length() < 1)
- throw new SourceNotFoundException("Not found: " + location + " -> " + newlocation);
+ if(filepath.length() < 1) filepath = "module.xmap";
+ String newlocation = publication.getModules().getFile(moduleId, filepath, needsReset);
+ if(newlocation.length() < 1) throw new SourceNotFoundException("Not found: " + location + " -> " + newlocation);
// System.out.println("ModuleSource: " + newlocation);
return new FileSource("file://" + newlocation);
}
Added: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationInputModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationInputModule.java?rev=693670&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationInputModule.java (added)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationInputModule.java Tue Sep 9 17:30:20 2008
@@ -0,0 +1,95 @@
+package org.apache.lenya.cms.modules;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.components.modules.input.AbstractInputModule;
+import org.apache.lenya.cms.content.flat.FlatContent;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.util.Globals;
+/**
+ * Retrieves Publication variables {publication:variablename} where case-insensitive variablename =<br>
+ * contenttype - flat or hierarchical<br>
+ * defaultlanguage<br>
+ * BreadcrumbPrefix<br>
+ * SSLPrefix<br>
+ * ServletContext<br>
+ * Directory - Discouraged, use content: and module: protocols<br>
+ * ContentDirectory - Discouraged, use content: protocol<br>
+ * The following three return semicolon-separated lists: languages<br>
+ * revisions<br>
+ * structures<br>
+ * <br>
+ * Anything else defaults to the publication Id. Best practice suggests using {publication:publication}.
+ *
+ * @author solprovider
+ * @since 1.3
+ */
+public class PublicationInputModule extends AbstractInputModule implements ThreadSafe {
+ /**
+ * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String, org.apache.avalon.framework.configuration.Configuration, java.util.Map)
+ */
+ public Object getAttribute(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
+ // TODO: Add "name"
+ if(getLogger().isDebugEnabled()){
+ getLogger().debug("Resolving [" + name + "]");
+ }
+ Publication publication = Globals.getPublication();
+ if(name.equalsIgnoreCase("contenttype")) return publication.getContentType();
+ if(name.equalsIgnoreCase("defaultlanguage")) return publication.getDefaultLanguage();
+ if(name.equalsIgnoreCase("BreadcrumbPrefix")) return publication.getBreadcrumbPrefix();
+ if(name.equalsIgnoreCase("SSLPrefix")) return publication.getSSLPrefix();
+ if(name.equalsIgnoreCase("revisions")){
+ Iterator iterator = ((FlatContent) publication.getContent()).getRevisions().iterator();
+ StringBuffer buffer = new StringBuffer("");
+ if(iterator.hasNext()) buffer.append((String) iterator.next());
+ while(iterator.hasNext())
+ buffer.append(";" + (String) iterator.next());
+ return buffer.toString();
+ }
+ if(name.equalsIgnoreCase("structures")){
+ Iterator iterator = ((FlatContent) publication.getContent()).getStructures().iterator();
+ StringBuffer buffer = new StringBuffer("");
+ if(iterator.hasNext()) buffer.append((String) iterator.next());
+ while(iterator.hasNext())
+ buffer.append(";" + (String) iterator.next());
+ return buffer.toString();
+ }
+ if(name.equalsIgnoreCase("languages")){
+ String[] languagesArray = publication.getLanguages();
+ StringBuffer buffer = new StringBuffer(languagesArray[0]);
+ for(int l = 1; l < languagesArray.length; l++)
+ buffer.append(";" + languagesArray[l]);
+ return buffer.toString();
+ }
+ try{
+ if(name.equalsIgnoreCase("ServletContext")) return publication.getServletContext().getCanonicalPath();
+ if(name.equalsIgnoreCase("Directory")) return publication.getDirectory().getCanonicalPath();
+ if(name.equalsIgnoreCase("ContentDirectory")) return publication.getContentDirectory().getCanonicalPath();
+ }catch(java.io.IOException ioe){
+ return "error";
+ }
+ return publication.getId();
+ }
+ /**
+ * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration, java.util.Map)
+ */
+ public Iterator getAttributeNames(Configuration modeConf, Map objectModel) throws ConfigurationException {
+ return Collections.EMPTY_SET.iterator();
+ }
+ /**
+ * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String, org.apache.avalon.framework.configuration.Configuration, java.util.Map)
+ */
+ public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel) throws ConfigurationException {
+ Object[] objects = {getAttribute(name, modeConf, objectModel)};
+ return objects;
+ }
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration conf) throws ConfigurationException {
+ super.configure(conf);
+ }
+}
\ No newline at end of file
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModules.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModules.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModules.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModules.java Tue Sep 9 17:30:20 2008
@@ -38,8 +38,7 @@
Configuration config;
public PublicationModules(String publicationId, String contentType, Configuration config) {
// public PublicationModules(String publicationId, String contentType, String servletContextPath, Configuration config) {
- if(null == config)
- return;
+ if(null == config) return;
int i;
this.publicationId = publicationId;
// this.servletContextPath = servletContextPath;
@@ -51,16 +50,14 @@
String attribute = attrnames[i];
String value = config.getAttribute(attrnames[i]);
if(attribute.equalsIgnoreCase("include")){
- if(!value.equalsIgnoreCase("all"))
- allAllowed = false;
+ if(!value.equalsIgnoreCase("all")) allAllowed = false;
}else if(attribute.equalsIgnoreCase("external")){
- if(!(value.equalsIgnoreCase("all") | value.equalsIgnoreCase("true")))
- allExternal = false;
+ if(!(value.equalsIgnoreCase("all") | value.equalsIgnoreCase("true"))) allExternal = false;
}else if((attribute.equalsIgnoreCase("inherit") | attribute.equalsIgnoreCase("template"))){
templates.add(value);
}
}catch(org.apache.avalon.framework.configuration.ConfigurationException ce){
- // TODO: Log Errors?
+ System.out.println("PublicationModules attributes ConfigurationException " + ce.getLocalizedMessage());
}
} // For each Attribute
Configuration[] children = config.getChildren();
@@ -72,7 +69,7 @@
try{
templates.add(children[c].getAttribute(attrnames[i]));
}catch(org.apache.avalon.framework.configuration.ConfigurationException ce){
- // TODO: Log Errors?
+ System.out.println("PublicationModules inherit ConfigurationException " + ce.getLocalizedMessage());
}
}
try{
@@ -91,11 +88,9 @@
try{
String value = children[c].getAttribute(attrnames[i]);
if(attribute.equalsIgnoreCase("external")){
- if(!(value.equalsIgnoreCase("yes") | value.equalsIgnoreCase("true")))
- isExternal = false;
+ if(!(value.equalsIgnoreCase("yes") | value.equalsIgnoreCase("true"))) isExternal = false;
}else if(attribute.equalsIgnoreCase("exclude")){
- if(!(value.equalsIgnoreCase("yes") | value.equalsIgnoreCase("true")))
- isExcluded = true;
+ if(!(value.equalsIgnoreCase("yes") | value.equalsIgnoreCase("true"))) isExcluded = true;
}else if(attribute.equalsIgnoreCase("name")){
name = value;
}else if((attribute.equalsIgnoreCase("inherit") | attribute.equalsIgnoreCase("template"))){
@@ -105,6 +100,7 @@
}
}catch(org.apache.avalon.framework.configuration.ConfigurationException ce){
// TODO: Log Errors?
+ System.out.println("PublicationModules module ConfigurationException " + ce.getLocalizedMessage());
}
}
if(name.length() > 0){
@@ -112,10 +108,8 @@
exclude.add(name);
}else{
external.put(name, new Boolean(isExternal));
- if(template.length() > 0)
- inherit.put(name, template);
- if(module.length() > 0)
- inherit.put(name, module);
+ if(template.length() > 0) inherit.put(name, template);
+ if(module.length() > 0) inherit.put(name, module);
// Variables
Map varmap = getVariablesFromConfiguration(children[c]);
Iterator keys = varmap.keySet().iterator();
@@ -136,38 +130,18 @@
* @return
*/
public boolean isExternal(String moduleId) {
- if(exclude.contains(moduleId))
- return false;
- if(allExternal)
- return true;
- if(external.containsKey(moduleId))
- return ((Boolean) external.get(moduleId)).booleanValue();
+ if(exclude.contains(moduleId)) return false;
+ if(allExternal) return true;
+ if(external.containsKey(moduleId)) return ((Boolean) external.get(moduleId)).booleanValue();
// TODO: Check parent templates?
return allAllowed;
}
public boolean isAllowed(String moduleId) {
- if(exclude.contains(moduleId))
- return false;
- if(allAllowed)
- return true;
- if(external.containsKey(moduleId))
- return true;
+ if(exclude.contains(moduleId)) return false;
+ if(allAllowed) return true;
+ if(external.containsKey(moduleId)) return true;
return false;
}
- // public String[] getTemplates(String moduleId) {
- // if(inherit.containsKey(moduleId)){
- // ArrayList tmpArray = new ArrayList();
- // tmpArray.add(inherit.get(moduleId));
- // tmpArray.addAll(templates);
- // return (String[]) tmpArray.toArray(new String[0]);
- // }
- // return (String[]) templates.toArray(new String[0]);
- // }
- // public String getInheritedModule(String moduleId) {
- // if(modules.containsKey(moduleId))
- // return (String) modules.get(moduleId);
- // return moduleId;
- // }
/**
* Returns Map("moduleId") = "inheritedFromPublication" Expected to be used only for Publication creation and modification (using the PublicationModulesGenerator) so performance (e.g. using a cache) is unimportant.
*/
@@ -187,7 +161,7 @@
if((publication.length() < 1) || publication.equalsIgnoreCase(publicationId) || templates.contains(publication)){
String module = parts[1];
if(!exclude.contains(module)){
- // System.out.println("KEY=" + key + " P=" + publication + " M=" + module);
+ // System.out.println("PublicationModules.getSourceModules KEY=" + key + " P=" + publication + " M=" + module);
modulesList.add(module);
}
}
@@ -200,18 +174,19 @@
Iterator iterator = modulesList.iterator();
while(iterator.hasNext()){
String moduleId = (String) iterator.next();
+ // TODO: Do not call getFile during initialization.
String filepath = getFile(moduleId, ".", false);
String inheritedModuleId = Globals.getModuleId(filepath);
String inheritedPublication = Globals.getPublicationId(filepath);
Module inheritedModule = Modules.getModule(inheritedPublication, inheritedModuleId, contentType);
if(null == inheritedModule){
- System.out.println(moduleId + "Module found at " + filepath + " could not be opened as Publication " + inheritedPublication + " Module " + inheritedModuleId);
+ System.out.println("PublicationModules.getSourceModules " + moduleId + "Module found at " + filepath + " could not be opened as Publication " + inheritedPublication + " Module " + inheritedModuleId);
}else{
String resource = inheritedModule.getResource();
if(resource.length() > 0){
resources.put(resource, inheritedModule);
}
- // System.out.println("FP=" + filepath + " MI=" + moduleId + " P=" + inheritedPublication + " M=" + inheritedModuleId + " R=" + resource);
+ // System.out.println("PublicationModules.getSourceModules MI=" + moduleId + " P=" + inheritedPublication + " M=" + inheritedModuleId + " R=" + resource); // + "FP=" + filepath);
modules.put(moduleId, inheritedModule);
}
}
@@ -230,8 +205,7 @@
}
public String getVariable(String moduleId, String varname) {
// TODO: Add reset. Do InputModules support double colon syntax?
- if(exclude.contains(moduleId))
- return "";
+ if(exclude.contains(moduleId)) return "";
if(variables.containsKey(publicationId + "." + moduleId + "." + varname)){
return (String) variables.get(publicationId + "." + moduleId + "." + varname);
}
@@ -272,12 +246,23 @@
}
return ret;
}
+ /**
+ * Do not call getFile() during initialization.<br>
+ * getFile calls Module.getFile calling Content.getDesignResource.<br>
+ * Content initialization checks Modules for Structures and RevisionNames.<br>
+ * Infinite loop!<br>
+ *
+ * @param moduleId
+ * @param filename
+ * @param reset
+ * @return
+ */
public String getFile(String moduleId, String filename, boolean reset) {
+ // WARNING: Do not call during initialization.
if(reset){
files = new HashMap();
}
- if(exclude.contains(moduleId))
- return "";
+ if(exclude.contains(moduleId)) return "";
if(files.containsKey(moduleId + "." + filename)){
return (String) files.get(moduleId + "." + filename);
}
@@ -285,8 +270,7 @@
String ret = "";
Module module = Modules.getModule(publicationId, moduleId, contentType);
if(null != module){
- if(reset)
- module.resetFiles();
+ if(reset) module.resetFiles();
ret = module.getFile(filename);
}
if(ret.length() < 1){
@@ -295,8 +279,7 @@
while(iterator.hasNext() && (ret.length() < 1)){
module = Modules.getModule((String) iterator.next(), moduleId, contentType);
if(null != module){
- if(reset)
- module.resetFiles();
+ if(reset) module.resetFiles();
ret = module.getFile(filename);
}
}
@@ -305,8 +288,7 @@
// Check Global Module
module = Modules.getModule("", moduleId, contentType);
if(null != module){
- if(reset)
- module.resetFiles();
+ if(reset) module.resetFiles();
ret = module.getFile(filename);
}
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModulesGenerator.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModulesGenerator.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModulesGenerator.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/modules/PublicationModulesGenerator.java Tue Sep 9 17:30:20 2008
@@ -3,10 +3,12 @@
import java.io.Serializable;
import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.caching.CacheableProcessingComponent;
import org.apache.cocoon.generation.ServiceableGenerator;
import org.apache.excalibur.source.SourceValidity;
+import org.apache.lenya.cms.content.flat.FlatContent;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.util.Globals;
import org.xml.sax.ContentHandler;
@@ -25,6 +27,10 @@
private static final String ATTR_MODULE_NAME = "name";
private static final String ATTR_PUB_ID = "publication";
private static final String ATTR_PUB_CONTENT = "content";
+ private static final String ELEMENT_STRUCTURE = "structure";
+ private static final String ATTR_STRUCTURE_ID = "id";
+ private static final String ELEMENT_REVISION = "revision";
+ private static final String ATTR_REVISION_ID = "id";
public Serializable getKey() {
// TODO Auto-generated method stub
return null;
@@ -33,7 +39,12 @@
// TODO Auto-generated method stub
return null;
}
+ /**
+ * Generate XML describing the resources used by the current publication
+ */
public void generate() throws IOException, SAXException, ProcessingException {
+ // <modules publication="default13" content="flat">
+ // Root node of XML with publication's Id and content type.
Publication publication = Globals.getPublication();
PublicationModules modules = publication.getModules();
Map modulesMap = modules.getSourceModules();
@@ -42,17 +53,23 @@
handler.startDocument();
handler.startPrefixMapping(PREFIX, URI);
AttributesImpl attributes = new AttributesImpl();
- // attributes.addAttribute("", "xmlns", "xmlns", "CDATA", URI);
attributes.addAttribute(URI, ATTR_PUB_ID, ATTR_PUB_ID, "CDATA", publication.getId());
attributes.addAttribute(URI, ATTR_PUB_CONTENT, ATTR_PUB_CONTENT, "CDATA", publication.getContentType());
- // attributes.addAttribute("xmlns", PREFIX, "xmlns:" + PREFIX, "CDATA", URI);
handler.startElement(URI, ELEMENT_TOP, ELEMENT_TOP, attributes);
handleResources(handler, resources);
handleModules(handler, modulesMap);
+ if(publication.getContentType().equals(FlatContent.TYPE)){
+ FlatContent flatContent = (FlatContent) publication.getContent();
+ handleStructures(handler, flatContent.getStructures());
+ handleRevisions(handler, flatContent.getRevisions());
+ }
handler.endElement(URI, ELEMENT_TOP, ELEMENT_TOP);
handler.endDocument();
}
private void handleResources(ContentHandler handler, Map resources) throws SAXException {
+ // <resource resource="/xml/xhtml" publication="" module="xhtml" name="XHTML"/>
+ // ResourceType is last part of "resource" attribute.
+ // publication and module attributes set base class. Inheritance follows from that module.
Iterator moduleI = resources.entrySet().iterator();
while(moduleI.hasNext()){
Map.Entry entry = (Map.Entry) moduleI.next();
@@ -70,6 +87,8 @@
}
}
private void handleModules(ContentHandler handler, Map modules) throws SAXException {
+ // <module id="live" publication="" module="live" name="Live"/>
+ // For a given "id", publication and module attributes set base class. Inheritance follows from that module.
Iterator moduleI = modules.entrySet().iterator();
while(moduleI.hasNext()){
Map.Entry entry = (Map.Entry) moduleI.next();
@@ -86,4 +105,28 @@
handler.endElement(URI, ELEMENT_MODULE, ELEMENT_MODULE);
}
}
+ private void handleStructures(ContentHandler handler, Set structures) throws SAXException {
+ // <structure id="live"/>
+ // List structures used by this publication.
+ Iterator moduleI = structures.iterator();
+ while(moduleI.hasNext()){
+ String structure = (String) moduleI.next();
+ AttributesImpl attributes = new AttributesImpl();
+ attributes.addAttribute(URI, ATTR_STRUCTURE_ID, ATTR_STRUCTURE_ID, "CDATA", structure);
+ handler.startElement(URI, ELEMENT_STRUCTURE, ELEMENT_STRUCTURE, attributes);
+ handler.endElement(URI, ELEMENT_STRUCTURE, ELEMENT_STRUCTURE);
+ }
+ }
+ private void handleRevisions(ContentHandler handler, Set revisions) throws SAXException {
+ // <revision id="live"/>
+ // List revisions used by this publication.
+ Iterator moduleI = revisions.iterator();
+ while(moduleI.hasNext()){
+ String revision = (String) moduleI.next();
+ AttributesImpl attributes = new AttributesImpl();
+ attributes.addAttribute(URI, ATTR_REVISION_ID, ATTR_REVISION_ID, "CDATA", revision);
+ handler.startElement(URI, ELEMENT_REVISION, ELEMENT_REVISION, attributes);
+ handler.endElement(URI, ELEMENT_REVISION, ELEMENT_REVISION);
+ }
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/AbstractPublication.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/AbstractPublication.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/AbstractPublication.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/AbstractPublication.java Tue Sep 9 17:30:20 2008
@@ -26,6 +26,7 @@
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.lenya.cms.content.Content;
import org.apache.lenya.cms.content.flat.FlatContent;
+import org.apache.lenya.cms.content.flat.FlatDesign;
import org.apache.lenya.cms.content.hierarchical.HierarchicalContent;
import org.apache.lenya.cms.modules.PublicationModules;
import org.apache.lenya.cms.publishing.PublishingEnvironment;
@@ -59,6 +60,7 @@
// Lenya1.3 - BEGIN
private PublicationModules modules;
private Content content;
+ private FlatDesign design = null;
private File publicationDirectory;
private File contentDirectory;
private String contentType = Content.TYPE_HIERARCHICAL;
@@ -75,11 +77,10 @@
* if there was a problem reading the config file
*/
protected AbstractPublication(String id, String servletContextPath) throws PublicationException {
+ // System.out.println("AbstractPublication " + id + " cp=" + servletContextPath);
// assert id != null;
this.id = id;
// assert servletContextPath != null;
- // System.out.println("Publication ServletContextPath=" +
- // servletContextPath);
File servletContext = new File(servletContextPath);
// assert servletContext.exists();
this.servletContext = servletContext;
@@ -153,20 +154,24 @@
this.areaContentDir.put(key, dir);
}
// Lenya1.3 - BEGIN
- // Content
+ // Configuration
Configuration contentConfig = config.getChild("content");
contentType = contentConfig.getAttribute("type", Content.TYPE_HIERARCHICAL);
String contentConfigValue = contentConfig.getValue(CONTENT_PATH);
publicationDirectory = new File(getServletContext(), PUBLICATION_PREFIX + File.separator + getId());
contentDirectory = new File(publicationDirectory, contentConfigValue);
- // TODO: Move code based on ContentType to Content package.
- if(contentType.equalsIgnoreCase(Content.TYPE_FLAT)){
- content = (Content) new FlatContent(contentDirectory, getLanguages());
- }else{
- content = (Content) new HierarchicalContent(contentDirectory, getLanguages());
+ // Design
+ if(contentType.equalsIgnoreCase(FlatContent.TYPE)){
+ design = new FlatDesign(contentDirectory, id);
}
// Modules
modules = new PublicationModules(id, contentType, config.getChild("modules"));
+ // Content
+ if(contentType.equalsIgnoreCase(FlatContent.TYPE)){
+ content = (Content) new FlatContent(contentDirectory, getLanguages(), modules, design);
+ }else{
+ content = (Content) new HierarchicalContent(contentDirectory, getLanguages());
+ }
// Lenya1.3 - END
}catch(PublicationException e){
throw e;
@@ -185,6 +190,9 @@
public Content getContent() {
return content;
}
+ public FlatDesign getDesign() {
+ return design;
+ }
public File getContentDirectory() {
return contentDirectory;
}
@@ -224,8 +232,7 @@
* @return A <code>File</code> object.
*/
public File getDirectory() {
- if(null == publicationDirectory)
- publicationDirectory = new File(getServletContext(), PUBLICATION_PREFIX + File.separator + getId());
+ if(null == publicationDirectory) publicationDirectory = new File(getServletContext(), PUBLICATION_PREFIX + File.separator + getId());
return publicationDirectory;
}
// Lenya1.3 - deprecated
@@ -375,9 +382,7 @@
* @return A document builder.
*/
public DocumentBuilder getDocumentBuilder() {
- if(documentBuilder == null){
- throw new IllegalStateException("The document builder was not defined in publication.xconf!");
- }
+ if(documentBuilder == null){ throw new IllegalStateException("The document builder was not defined in publication.xconf!"); }
return documentBuilder;
}
/**
@@ -440,9 +445,7 @@
SiteTree sourceTree = getSiteTree(sourceDocument.getArea());
SiteTree destinationTree = getSiteTree(destinationDocument.getArea());
SiteTreeNode sourceNode = sourceTree.getNode(sourceDocument.getId());
- if(sourceNode == null){
- throw new PublicationException("The node for source document [" + sourceDocument.getId() + "] doesn't exist!");
- }
+ if(sourceNode == null){ throw new PublicationException("The node for source document [" + sourceDocument.getId() + "] doesn't exist!"); }
SiteTreeNode[] siblings = sourceNode.getNextSiblings();
String parentId = sourceNode.getAbsoluteParentId();
SiteTreeNode sibling = null;
@@ -480,8 +483,7 @@
// and synchronize visibilityinnav attribute with the one in
// the source area
String visibility = "true";
- if(!sourceNode.visibleInNav())
- visibility = "false";
+ if(!sourceNode.visibleInNav()) visibility = "false";
destinationNode.setNodeAttribute(SiteTreeNodeImpl.VISIBLEINNAV_ATTRIBUTE_NAME, visibility);
// also update the link attribute if necessary
if(sourceNode.hasLink() != destinationNode.hasLink()){
@@ -510,9 +512,7 @@
* @see org.apache.lenya.cms.publication.Publication#deleteDocument(org.apache.lenya.cms.publication.Document)
*/
public void deleteDocument(Document document) throws PublicationException {
- if(!document.exists()){
- throw new PublicationException("Document [" + document + "] does not exist!");
- }
+ if(!document.exists()){ throw new PublicationException("Document [" + document + "] does not exist!"); }
deleteFromSiteStructure(document);
deleteDocumentSource(document);
}
@@ -533,16 +533,10 @@
throw new PublicationException(e);
}
SiteTreeNode node = tree.getNode(document.getId());
- if(node == null){
- throw new PublicationException("Sitetree node for document [" + document + "] does not exist!");
- }
+ if(node == null){ throw new PublicationException("Sitetree node for document [" + document + "] does not exist!"); }
Label label = node.getLabel(document.getLanguage());
- if(label == null){
- throw new PublicationException("Sitetree label for document [" + document + "] in language [" + document.getLanguage() + "]does not exist!");
- }
- if(node.getLabels().length == 1 && node.getChildren().length > 0){
- throw new PublicationException("Cannot delete last language version of document [" + document + "] because this node has children.");
- }
+ if(label == null){ throw new PublicationException("Sitetree label for document [" + document + "] in language [" + document.getLanguage() + "]does not exist!"); }
+ if(node.getLabels().length == 1 && node.getChildren().length > 0){ throw new PublicationException("Cannot delete last language version of document [" + document + "] because this node has children."); }
node.removeLabel(label);
try{
if(node.getLabels().length == 0){
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelope.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelope.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelope.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelope.java Tue Sep 9 17:30:20 2008
@@ -109,11 +109,12 @@
* @deprecated Performance problems. Use {@link PageEnvelopeFactory#getPageEnvelope(Map)} instead.
*/
public PageEnvelope(Map objectModel) throws PageEnvelopeException {
- try{
- init(PublicationFactory.getPublication(objectModel), ObjectModelHelper.getRequest(objectModel));
- }catch(PublicationException e){
- throw new PageEnvelopeException(e);
- }
+ // try{
+ // init(PublicationFactory.getPublication(objectModel), ObjectModelHelper.getRequest(objectModel));
+ init(Globals.getPublication(), ObjectModelHelper.getRequest(objectModel));
+ // }catch(PublicationException e){
+ // throw new PageEnvelopeException(e);
+ // }
}
/**
* Creates a new instance of PageEnvelope from a sitemap inside a publication.
@@ -197,17 +198,18 @@
* @throws PageEnvelopeException
*/
static public PageEnvelope getCurrent() throws PageEnvelopeException {
+ // Check if already set.
Request request = Globals.getRequest();
- if(null == request){
- throw new PageEnvelopeException("Cannot access a PageEnvelope without a Request.");
+ if(null != request){
+ Object o = request.getAttribute(PageEnvelope.class.getName());
+ if(null != o){ return (PageEnvelope) o; }
}
- Object o = request.getAttribute(PageEnvelope.class.getName());
- if(null != o){
- return (PageEnvelope) o;
+ // Otherwise create.
+ PageEnvelope envelope = new PageEnvelope(Globals.getObjectModel(), true);
+ if(null != request){
+ // Store for future use.
+ request.setAttribute(PageEnvelope.class.getName(), envelope);
}
- PageEnvelope envelope = (PageEnvelope) request.getAttribute(PageEnvelope.class.getName());
- envelope = new PageEnvelope(Globals.getObjectModel(), true);
- request.setAttribute(PageEnvelope.class.getName(), envelope);
return envelope;
}
/**
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/Publication.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/Publication.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/Publication.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/Publication.java Tue Sep 9 17:30:20 2008
@@ -14,252 +14,245 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.publication;
-
import java.io.File;
import org.apache.lenya.cms.content.Content;
+import org.apache.lenya.cms.content.flat.FlatDesign;
import org.apache.lenya.cms.modules.PublicationModules;
import org.apache.lenya.cms.publishing.PublishingEnvironment;
-
-
/**
* A Lenya publication.
*/
public interface Publication {
-
- String AUTHORING_AREA = "authoring";
- String STAGING_AREA = "staging";
- String LIVE_AREA = "live";
- String ADMIN_AREA = "admin";
- String ARCHIVE_AREA = "archive";
- String TRASH_AREA = "trash";
- String ELEMENT_PATH_MAPPER = "path-mapper";
- String ELEMENT_DOCUMENT_BUILDER = "document-builder";
- String ELEMENT_SITE_STRUCTURE = "site-structure";
- String ATTRIBUTE_TYPE = "type";
- String LANGUAGES = "languages";
- String LANGUAGE = "language";
- String DEFAULT_LANGUAGE_ATTR = "default";
- String BREADCRUMB_PREFIX = "breadcrumb-prefix";
- String SSL_PREFIX = "ssl-prefix";
- String LIVE_MOUNT_POINT = "live-mount-point";
- String PUBLICATION_PREFIX = "lenya" + File.separator + "pubs";
- String PUBLICATION_PREFIX_URI = "lenya/pubs";
- String CONFIGURATION_PATH = "config";
- String CONTENT_PATH = "content";
- String PENDING_PATH = "pending";
- String DELETE_PATH = "delete";
- String INFO_AREA_PREFIX = "info-";
- String SEARCH_AREA_PREFIX = "search-";
- String CONFIGURATION_FILE = CONFIGURATION_PATH + File.separator + "publication.xconf";
-
- /**
- * Returns the publication ID.
- * @return A string value.
- */
- String getId();
-
- /**
- * Returns the publishing environment of this publication.
- * @return A {@link PublishingEnvironment} object.
- * @deprecated It is planned to decouple the environments from the publication.
- */
- PublishingEnvironment getEnvironment();
-
- /**
- * Returns the servlet context this publication belongs to
- * (usually, the <code>webapps/lenya</code> directory).
- * @return A <code>File</code> object.
- */
- File getServletContext();
-
- /**
- * Returns the publication directory.
- * @return A <code>File</code> object.
- */
- File getDirectory();
-
- /**
- * Return the directory of a specific area.
- *
- * @param area a <code>File</code> representing the root of the area content directory.
- *
- * @return the directory of the given content area.
- */
- File getContentDirectory(String area);
-
- /**
- * DOCUMENT ME!
- *
- * @param mapper DOCUMENT ME!
- */
- void setPathMapper(DefaultDocumentIdToPathMapper mapper);
-
- /**
- * Returns the path mapper.
- *
- * @return a <code>DocumentIdToPathMapper</code>
- */
- DocumentIdToPathMapper getPathMapper();
-
- /**
- * Get the default language
- *
- * @return the default language
- */
- String getDefaultLanguage();
-
- /**
- * Set the default language
- *
- * @param language the default language
- */
- void setDefaultLanguage(String language);
-
- /**
- * Get all available languages for this publication
- *
- * @return an <code>Array</code> of languages
- */
- String[] getLanguages();
-
- /**
- * Get the breadcrumb prefix. It can be used as a prefix if a publication is part of a larger site
- *
- * @return the breadcrumb prefix
- */
- String getBreadcrumbPrefix();
-
- /**
- * Get the SSL prefix. If you want to serve SSL-protected pages through a special site, use this
- * prefix. This can come in handy if you have multiple sites that need SSL protection and you want
- * to share one SSL certificate.
- *
- * @return the SSL prefix
- */
- String getSSLPrefix();
-
- /**
- * Get the Live mount point. The live mount point is used to rewrite links that are of the form
- * /contextprefix/publication/area/documentid to /livemountpoint/documentid
- *
- * This is useful if you serve your live area through mod_proxy. to enable this functionality, set
- * the Live mount point to / or something else. An empty mount point disables the feature.
- *
- * @return the Live mount point
- */
- String getLiveMountPoint();
-
- /**
- * Get the sitetree for a specific area of this publication.
- * Sitetrees are created on demand and are cached.
- *
- * @param area the area
- * @return the sitetree for the specified area
- *
- * @throws SiteTreeException if an error occurs
- */
- SiteTree getTree(String area) throws SiteTreeException;
-
- /**
- * Get the sitetree for a specific area of this publication.
- * Sitetrees are created on demand and are cached.
- *
- * @deprecated Please use getTree() because this method returns the interface and not a specific implementation
- * @see getTree()
- *
- * @param area the area
- * @return the sitetree for the specified area
- *
- * @throws SiteTreeException if an error occurs
- */
- DefaultSiteTree getSiteTree(String area) throws SiteTreeException;
-
- /**
- * Returns the document builder of this instance.
- * @return A document builder.
- */
- DocumentBuilder getDocumentBuilder();
-
- /**
- * Copies a document from one location to another location.
- * @param sourceDocument The document to copy.
- * @param destinationDocument The destination document.
- * @throws PublicationException if a document which destinationDocument depends on
- * does not exist.
- */
- void copyDocument(Document sourceDocument, Document destinationDocument)
- throws PublicationException;
-
- /**
- * Copies a document to another area.
- * @param sourceDocument The document to copy.
- * @param destinationArea The destination area.
- * @throws PublicationException if a document which the
- * destination document depends on does not exist.
- */
- void copyDocumentToArea(Document sourceDocument, String destinationArea)
- throws PublicationException;
-
- /**
- * Copies a document set to another area.
- * @param documentSet The document set to copy.
- * @param destinationArea The destination area.
- * @throws PublicationException if a document which one of the
- * destination documents depends on does not exist.
- */
- void copyDocumentSetToArea(DocumentSet documentSet, String destinationArea)
- throws PublicationException;
-
- /**
- * Deletes a document.
- * @param document The document to delete.
- * @throws PublicationException when something went wrong.
- */
- void deleteDocument(Document document) throws PublicationException;
-
- /**
- * Moves a document from one location to another.
- * @param sourceDocument The source document.
- * @param destinationDocument The destination document.
- * @throws PublicationException if a document which the
- * destination document depends on does not exist.
- */
- void moveDocument(Document sourceDocument, Document destinationDocument) throws PublicationException;
-
- /**
- * Creates a version of the document object in another area.
- * @param document The document to clone.
- * @param area The destination area.
- * @return A document.
- * @throws PublicationException when an error occurs.
- */
- Document getAreaVersion(Document document, String area) throws PublicationException;
-
- /**
- * Returns the proxy which is used for a particular document.
- * @param document The document.
- * @param isSslProtected A boolean value.
- * @return A proxy or <code>null</code> if no proxy is defined
- * for this version.
- */
- Proxy getProxy(Document document, boolean isSslProtected);
-
- /**
- * Returns an array of XPaths representing attributes to be rewritten
- * when a document URL has changed.
- * @return An array of strings.
- */
- String[] getRewriteAttributeXPaths();
-
-//Lenya1.3 - BEGIN
- PublicationModules getModules();
- Content getContent();
- File getContentDirectory();
- String getContentType();
-//Lenya1.3 - END
-
+ String AUTHORING_AREA = "authoring";
+ String STAGING_AREA = "staging";
+ String LIVE_AREA = "live";
+ String ADMIN_AREA = "admin";
+ String ARCHIVE_AREA = "archive";
+ String TRASH_AREA = "trash";
+ String ELEMENT_PATH_MAPPER = "path-mapper";
+ String ELEMENT_DOCUMENT_BUILDER = "document-builder";
+ String ELEMENT_SITE_STRUCTURE = "site-structure";
+ String ATTRIBUTE_TYPE = "type";
+ String LANGUAGES = "languages";
+ String LANGUAGE = "language";
+ String DEFAULT_LANGUAGE_ATTR = "default";
+ String BREADCRUMB_PREFIX = "breadcrumb-prefix";
+ String SSL_PREFIX = "ssl-prefix";
+ String LIVE_MOUNT_POINT = "live-mount-point";
+ String PUBLICATION_PREFIX = "lenya" + File.separator + "pubs";
+ String PUBLICATION_PREFIX_URI = "lenya/pubs";
+ String CONFIGURATION_PATH = "config";
+ String CONTENT_PATH = "content";
+ String PENDING_PATH = "pending";
+ String DELETE_PATH = "delete";
+ String INFO_AREA_PREFIX = "info-";
+ String SEARCH_AREA_PREFIX = "search-";
+ String CONFIGURATION_FILE = CONFIGURATION_PATH + File.separator + "publication.xconf";
+ /**
+ * Returns the publication ID.
+ *
+ * @return A string value.
+ */
+ String getId();
+ /**
+ * Returns the publishing environment of this publication.
+ *
+ * @return A {@link PublishingEnvironment} object.
+ * @deprecated It is planned to decouple the environments from the publication.
+ */
+ PublishingEnvironment getEnvironment();
+ /**
+ * Returns the servlet context this publication belongs to (usually, the <code>webapps/lenya</code> directory).
+ *
+ * @return A <code>File</code> object.
+ */
+ File getServletContext();
+ /**
+ * Returns the publication directory.
+ *
+ * @return A <code>File</code> object.
+ */
+ File getDirectory();
+ /**
+ * Return the directory of a specific area.
+ *
+ * @param area
+ * a <code>File</code> representing the root of the area content directory.
+ *
+ * @return the directory of the given content area.
+ */
+ File getContentDirectory(String area);
+ /**
+ * DOCUMENT ME!
+ *
+ * @param mapper
+ * DOCUMENT ME!
+ */
+ void setPathMapper(DefaultDocumentIdToPathMapper mapper);
+ /**
+ * Returns the path mapper.
+ *
+ * @return a <code>DocumentIdToPathMapper</code>
+ */
+ DocumentIdToPathMapper getPathMapper();
+ /**
+ * Get the default language
+ *
+ * @return the default language
+ */
+ String getDefaultLanguage();
+ /**
+ * Set the default language
+ *
+ * @param language
+ * the default language
+ */
+ void setDefaultLanguage(String language);
+ /**
+ * Get all available languages for this publication
+ *
+ * @return an <code>Array</code> of languages
+ */
+ String[] getLanguages();
+ /**
+ * Get the breadcrumb prefix. It can be used as a prefix if a publication is part of a larger site
+ *
+ * @return the breadcrumb prefix
+ */
+ String getBreadcrumbPrefix();
+ /**
+ * Get the SSL prefix. If you want to serve SSL-protected pages through a special site, use this prefix. This can come in handy if you have multiple sites that need SSL protection and you want to share one SSL certificate.
+ *
+ * @return the SSL prefix
+ */
+ String getSSLPrefix();
+ /**
+ * Get the Live mount point. The live mount point is used to rewrite links that are of the form /contextprefix/publication/area/documentid to /livemountpoint/documentid
+ *
+ * This is useful if you serve your live area through mod_proxy. to enable this functionality, set the Live mount point to / or something else. An empty mount point disables the feature.
+ *
+ * @return the Live mount point
+ */
+ String getLiveMountPoint();
+ /**
+ * Get the sitetree for a specific area of this publication. Sitetrees are created on demand and are cached.
+ *
+ * @param area
+ * the area
+ * @return the sitetree for the specified area
+ *
+ * @throws SiteTreeException
+ * if an error occurs
+ */
+ SiteTree getTree(String area) throws SiteTreeException;
+ /**
+ * Get the sitetree for a specific area of this publication. Sitetrees are created on demand and are cached.
+ *
+ * @deprecated Please use getTree() because this method returns the interface and not a specific implementation
+ * @see getTree()
+ *
+ * @param area
+ * the area
+ * @return the sitetree for the specified area
+ *
+ * @throws SiteTreeException
+ * if an error occurs
+ */
+ DefaultSiteTree getSiteTree(String area) throws SiteTreeException;
+ /**
+ * Returns the document builder of this instance.
+ *
+ * @return A document builder.
+ */
+ DocumentBuilder getDocumentBuilder();
+ /**
+ * Copies a document from one location to another location.
+ *
+ * @param sourceDocument
+ * The document to copy.
+ * @param destinationDocument
+ * The destination document.
+ * @throws PublicationException
+ * if a document which destinationDocument depends on does not exist.
+ */
+ void copyDocument(Document sourceDocument, Document destinationDocument) throws PublicationException;
+ /**
+ * Copies a document to another area.
+ *
+ * @param sourceDocument
+ * The document to copy.
+ * @param destinationArea
+ * The destination area.
+ * @throws PublicationException
+ * if a document which the destination document depends on does not exist.
+ */
+ void copyDocumentToArea(Document sourceDocument, String destinationArea) throws PublicationException;
+ /**
+ * Copies a document set to another area.
+ *
+ * @param documentSet
+ * The document set to copy.
+ * @param destinationArea
+ * The destination area.
+ * @throws PublicationException
+ * if a document which one of the destination documents depends on does not exist.
+ */
+ void copyDocumentSetToArea(DocumentSet documentSet, String destinationArea) throws PublicationException;
+ /**
+ * Deletes a document.
+ *
+ * @param document
+ * The document to delete.
+ * @throws PublicationException
+ * when something went wrong.
+ */
+ void deleteDocument(Document document) throws PublicationException;
+ /**
+ * Moves a document from one location to another.
+ *
+ * @param sourceDocument
+ * The source document.
+ * @param destinationDocument
+ * The destination document.
+ * @throws PublicationException
+ * if a document which the destination document depends on does not exist.
+ */
+ void moveDocument(Document sourceDocument, Document destinationDocument) throws PublicationException;
+ /**
+ * Creates a version of the document object in another area.
+ *
+ * @param document
+ * The document to clone.
+ * @param area
+ * The destination area.
+ * @return A document.
+ * @throws PublicationException
+ * when an error occurs.
+ */
+ Document getAreaVersion(Document document, String area) throws PublicationException;
+ /**
+ * Returns the proxy which is used for a particular document.
+ *
+ * @param document
+ * The document.
+ * @param isSslProtected
+ * A boolean value.
+ * @return A proxy or <code>null</code> if no proxy is defined for this version.
+ */
+ Proxy getProxy(Document document, boolean isSslProtected);
+ /**
+ * Returns an array of XPaths representing attributes to be rewritten when a document URL has changed.
+ *
+ * @return An array of strings.
+ */
+ String[] getRewriteAttributeXPaths();
+ // Lenya1.3 - BEGIN
+ PublicationModules getModules();
+ Content getContent();
+ FlatDesign getDesign();
+ File getContentDirectory();
+ String getContentType();
+ // Lenya1.3 - END
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java Tue Sep 9 17:30:20 2008
@@ -18,7 +18,6 @@
package org.apache.lenya.cms.publication;
import java.io.File;
import java.io.IOException;
-import java.util.HashMap;
import java.util.Map;
import org.apache.cocoon.environment.Context;
import org.apache.cocoon.environment.ObjectModelHelper;
@@ -26,11 +25,13 @@
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.SourceUtil;
-import org.apache.lenya.cms.publication.file.FilePublication;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.util.ServletHelper;
import org.apache.log4j.Logger;
/**
* Factory for creating publication objects.
+ *
+ * @deprecated Use Globals.getPublication functions.
*/
public final class PublicationFactory {
private static Logger log = Logger.getLogger(PublicationFactory.class);
@@ -39,7 +40,7 @@
*/
private PublicationFactory() {
}
- private static Map keyToPublication = new HashMap();
+ // private static Map keyToPublication = new HashMap();
/**
* Creates a new publication. The publication ID is resolved from the request URI. The servlet context path is resolved from the context object.
*
@@ -50,8 +51,10 @@
*
* @throws PublicationException
* if there was a problem creating the publication.
+ * @deprecated Use Globals.getPublication()
*/
public static Publication getPublication(Map objectModel) throws PublicationException {
+ // System.out.println("PublicationFactory Map");
// assert objectModel != null;
Request request = ObjectModelHelper.getRequest(objectModel);
Context context = ObjectModelHelper.getContext(objectModel);
@@ -69,24 +72,27 @@
*
* @throws PublicationException
* if there was a problem creating the publication.
+ * @deprecated Use Globals.getPublication(id)
*/
public static Publication getPublication(String id, String servletContextPath) throws PublicationException {
- // assert id != null;
- // assert servletContextPath != null;
- String key = generateKey(id, servletContextPath);
- Publication publication = null;
- if(keyToPublication.containsKey(key)){
- publication = (Publication) keyToPublication.get(key);
- }else{
- if(PublicationFactory.existsPublication(id, servletContextPath)){
- publication = new FilePublication(id, servletContextPath);
- keyToPublication.put(key, publication);
- }
- }
- if(publication == null){
- throw new PublicationException("The publication for ID [" + id + "] could not be created.");
- }
- return publication;
+ // System.out.println("PublicationFactory id contextPath");
+ return Globals.getPublication(id);
+ // // assert id != null;
+ // // assert servletContextPath != null;
+ // String key = generateKey(id, servletContextPath);
+ // Publication publication = null;
+ // if(keyToPublication.containsKey(key)){
+ // publication = (Publication) keyToPublication.get(key);
+ // }else{
+ // if(PublicationFactory.existsPublication(id, servletContextPath)){
+ // publication = new FilePublication(id, servletContextPath);
+ // keyToPublication.put(key, publication);
+ // }
+ // }
+ // if(publication == null){
+ // throw new PublicationException("The publication for ID [" + id + "] could not be created.");
+ // }
+ // return publication;
}
/**
* Generates a key to cache a publication. The cache key is constructed using the canonical servlet context path and the publication ID.
@@ -100,6 +106,7 @@
* when the servlet context does not exist.
*/
protected static String generateKey(String publicationId, String servletContextPath) throws PublicationException {
+ // System.out.println("PublicationFactory.generateKey");
String key;
File servletContext = new File(servletContextPath);
String canonicalPath;
@@ -123,8 +130,10 @@
*
* @throws PublicationException
* if there was a problem creating the publication.
+ * @deprecated Use Globals.getPublication()
*/
public static Publication getPublication(Request request, Context context) throws PublicationException {
+ // System.out.println("PublicationFactory request context");
log.debug("Creating publication from Cocoon object model");
String webappUrl = ServletHelper.getWebappURI(request);
String servletContextPath = context.getRealPath("");
@@ -140,8 +149,10 @@
* @return A publication
* @throws PublicationException
* when something went wrong
+ * @deprecated Use Globals.getPublication()
*/
public static Publication getPublication(String webappUrl, File servletContext) throws PublicationException {
+ // System.out.println("PublicationFactory url context");
log.debug("Creating publication from webapp URL and servlet context");
log.debug(" Webapp URL: [" + webappUrl + "]");
String publicationId = new URLInformation(webappUrl).getPublicationId();
@@ -156,16 +167,19 @@
* @param servletContextPath
* The webapp context path.
* @return <code>true</code> if the publication exists, <code>false</code> otherwise.
+ * @deprecated Use Globals.existsPublication(id)
*/
public static boolean existsPublication(String id, String servletContextPath) {
- if(servletContextPath.endsWith("/")){
- servletContextPath = servletContextPath.substring(0, servletContextPath.length() - 1);
- }
- File publicationDirectory = new File(servletContextPath + File.separator + Publication.PUBLICATION_PREFIX + File.separator + id);
- boolean exists = true;
- exists = exists && publicationDirectory.isDirectory();
- exists = exists && new File(publicationDirectory, Publication.CONFIGURATION_FILE).exists();
- return exists;
+ // System.out.println("PublicationFactory.existsPublication");
+ return Globals.existsPublication(id);
+ // if(servletContextPath.endsWith("/")){
+ // servletContextPath = servletContextPath.substring(0, servletContextPath.length() - 1);
+ // }
+ // File publicationDirectory = new File(servletContextPath + File.separator + Publication.PUBLICATION_PREFIX + File.separator + id);
+ // boolean exists = true;
+ // exists = exists && publicationDirectory.isDirectory();
+ // exists = exists && new File(publicationDirectory, Publication.CONFIGURATION_FILE).exists();
+ // return exists;
}
/**
* Creates a publication using a source resolver and a request.
@@ -177,8 +191,10 @@
* @return A publication.
* @throws PublicationException
* when something went wrong.
+ * @deprecated Use Globals.getPublication()
*/
public static Publication getPublication(SourceResolver resolver, Request request) throws PublicationException {
+ // System.out.println("PublicationFactory resolver request");
log.debug("Creating publication from resolver and request");
Publication publication;
String webappUri = ServletHelper.getWebappURI(request);
@@ -186,7 +202,7 @@
try{
source = resolver.resolveURI("context:///");
File servletContext = SourceUtil.getFile(source);
- publication = PublicationFactory.getPublication(webappUri, servletContext);
+ publication = getPublication(webappUri, servletContext);
}catch(Exception e){
throw new PublicationException(e);
}finally{
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java Tue Sep 9 17:30:20 2008
@@ -26,7 +26,6 @@
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationFactory;
import org.apache.lenya.cms.publication.ResourcesManager;
import org.apache.lenya.cms.rc.FileReservedCheckInException;
import org.apache.lenya.cms.rc.RCEnvironment;
@@ -36,6 +35,7 @@
import org.apache.lenya.cms.task.ExecutionException;
import org.apache.lenya.cms.task.Task;
import org.apache.lenya.cms.workflow.WorkflowFactory;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.workflow.Event;
import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.SynchronizedWorkflowInstances;
@@ -58,8 +58,10 @@
if(publication == null){
try{
String publicationId = getParameters().getParameter(Task.PARAMETER_PUBLICATION_ID);
- String servletContextPath = getParameters().getParameter(Task.PARAMETER_SERVLET_CONTEXT);
- publication = PublicationFactory.getPublication(publicationId, servletContextPath);
+ publication = Globals.getPublication(publicationId);
+ if(null == publication){
+ throw new PublicationException("PublicationTask.getPublication: No Publication.");
+ }
}catch(Exception e){
throw new ExecutionException(e);
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java Tue Sep 9 17:30:20 2008
@@ -37,9 +37,9 @@
import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationFactory;
import org.apache.lenya.cms.publishing.PublishingEnvironment;
import org.apache.lenya.cms.scheduler.xml.TriggerHelper;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.xml.DocumentHelper;
import org.apache.log4j.Logger;
@@ -220,7 +220,10 @@
String jobId = getJobId(schedulerParameters);
getScheduler().deleteJob(jobId, publicationId);
}else if(action.equals(DOCUMENT_DELETED)){
- Publication publication = PublicationFactory.getPublication(publicationId, getServletContextDirectory().getAbsolutePath());
+ Publication publication = Globals.getPublication(publicationId);
+ if(null == publication){
+ throw new PublicationException("LoadQuartzServlet.handleRequest: No Publication.");
+ }
String documentUrl = (String) schedulerParameters.get(PARAMETER_DOCUMENT_URL);
org.apache.lenya.cms.publication.Document document = publication.getDocumentBuilder().buildDocument(publication, documentUrl);
deleteDocumentJobs(document);
@@ -332,7 +335,7 @@
for(int i = 0; i < publicationDirectories.length; i++){
File directory = publicationDirectories[i];
String publicationId = directory.getName();
- if(PublicationFactory.existsPublication(publicationId, getServletContextDirectory().getAbsolutePath())){
+ if(Globals.existsPublication(publicationId)){
getScheduler().restoreJobs(publicationId);
}
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java Tue Sep 9 17:30:20 2008
@@ -28,8 +28,8 @@
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationFactory;
import org.apache.lenya.cms.scheduler.xml.TriggerHelper;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.xml.NamespaceHelper;
import org.apache.log4j.Logger;
import org.quartz.JobDataMap;
@@ -203,7 +203,11 @@
* when the publication does not exist.
*/
protected Publication getPublication(String jobGroup) throws PublicationException {
- return PublicationFactory.getPublication(jobGroup, getServletContextPath());
+ Publication publication = Globals.getPublication(jobGroup);
+ if(null == publication){
+ throw new PublicationException("ScheduleWrapper.getPublication: No Publication.");
+ }
+ return publication;
}
/**
* Adds a job.
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskParameters.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskParameters.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskParameters.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskParameters.java Tue Sep 9 17:30:20 2008
@@ -14,82 +14,71 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
import java.util.Map;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationFactory;
-
+import org.apache.lenya.util.Globals;
public class TaskParameters extends ParameterWrapper {
- public static final String[] REQUIRED_KEYS =
- {
- Task.PARAMETER_SERVLET_CONTEXT,
- Task.PARAMETER_SERVER_URI,
- Task.PARAMETER_SERVER_PORT,
- Task.PARAMETER_CONTEXT_PREFIX,
- Task.PARAMETER_PUBLICATION_ID };
-
- /**
- * Ctor.
- * @param prefixedParameters The prefixed parameters .
- */
- public TaskParameters(Map prefixedParameters) {
- super(prefixedParameters);
- }
-
- public static final String PREFIX = "task";
-
- /**
- * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
- */
- public String getPrefix() {
- return PREFIX;
- }
-
- /**
- * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
- */
- protected String[] getRequiredKeys() {
- return REQUIRED_KEYS;
- }
-
- /**
- * Returns the publication.
- * @return A publication.
- * @throws ExecutionException when something went wrong.
- */
- public Publication getPublication() throws ExecutionException {
- Publication publication;
- try {
- publication =
- PublicationFactory.getPublication(
- get(Task.PARAMETER_PUBLICATION_ID),
- get(Task.PARAMETER_SERVLET_CONTEXT));
- } catch (PublicationException e) {
- throw new ExecutionException(e);
- }
- return publication;
- }
-
- /**
- * Sets the publication.
- * @param publication A publication.
- */
- public void setPublication(Publication publication) {
- put(Task.PARAMETER_PUBLICATION_ID, publication.getId());
- put(Task.PARAMETER_SERVLET_CONTEXT, publication.getServletContext().getAbsolutePath());
- }
-
- /**
- * Sets the servlet context path.
- * @param servletContextPath A string.
- */
- public void setServletContextPath(String servletContextPath) {
- put(Task.PARAMETER_SERVLET_CONTEXT, servletContextPath);
- }
-
+ public static final String[] REQUIRED_KEYS = {Task.PARAMETER_SERVLET_CONTEXT, Task.PARAMETER_SERVER_URI, Task.PARAMETER_SERVER_PORT, Task.PARAMETER_CONTEXT_PREFIX, Task.PARAMETER_PUBLICATION_ID};
+ /**
+ * Ctor.
+ *
+ * @param prefixedParameters
+ * The prefixed parameters .
+ */
+ public TaskParameters(Map prefixedParameters) {
+ super(prefixedParameters);
+ }
+ public static final String PREFIX = "task";
+ /**
+ * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
+ */
+ public String getPrefix() {
+ return PREFIX;
+ }
+ /**
+ * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
+ */
+ protected String[] getRequiredKeys() {
+ return REQUIRED_KEYS;
+ }
+ /**
+ * Returns the publication.
+ *
+ * @return A publication.
+ * @throws ExecutionException
+ * when something went wrong.
+ */
+ public Publication getPublication() throws ExecutionException {
+ try{
+ Publication publication = Globals.getPublication(get(Task.PARAMETER_PUBLICATION_ID));
+ if(null == publication){
+ throw new PublicationException("TaskParameters.getPublication: No Publication.");
+ }
+ return publication;
+ }catch(PublicationException e){
+ throw new ExecutionException(e);
+ }
+ }
+ /**
+ * Sets the publication.
+ *
+ * @param publication
+ * A publication.
+ */
+ public void setPublication(Publication publication) {
+ put(Task.PARAMETER_PUBLICATION_ID, publication.getId());
+ put(Task.PARAMETER_SERVLET_CONTEXT, publication.getServletContext().getAbsolutePath());
+ }
+ /**
+ * Sets the servlet context path.
+ *
+ * @param servletContextPath
+ * A string.
+ */
+ public void setServletContextPath(String servletContextPath) {
+ put(Task.PARAMETER_SERVLET_CONTEXT, servletContextPath);
+ }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.