You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by so...@apache.org on 2008/03/08 23:59:02 UTC
svn commit: r635107 [3/7] - in /lenya/branches/revolution/1.3.x: ./
src/cocoon/ src/java/org/apache/cocoon/components/source/
src/java/org/apache/lenya/ac/ src/java/org/apache/lenya/ac/cache/
src/java/org/apache/lenya/ac/file/ src/java/org/apache/lenya...
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationModule.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationModule.java Sat Mar 8 14:58:32 2008
@@ -6,6 +6,7 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.lenya.cms.publication.PageEnvelope;
+import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.Publication;
/**
* Retrieves Publication variables.
@@ -24,7 +25,12 @@
if(getLogger().isDebugEnabled()){
getLogger().debug("Resolving [" + name + "]");
}
- PageEnvelope pe = getEnvelope(objectModel);
+ PageEnvelope pe;
+ try{
+ pe = PageEnvelope.getCurrent();
+ }catch(PageEnvelopeException e){
+ throw new ConfigurationException("Resolving page envelope failed: ", e);
+ }
Publication pub = pe.getPublication();
if(name.equalsIgnoreCase("contenttype"))
return pub.getContentType();
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/ResourceExistsModule.java Sat Mar 8 14:58:32 2008
@@ -19,7 +19,6 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
-
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java Sat Mar 8 14:58:32 2008
@@ -14,99 +14,75 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.cocoon.components.modules.input;
-
import java.util.Arrays;
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.cocoon.components.modules.input.AbstractInputModule;
import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.SiteTree;
import org.apache.lenya.cms.publication.SiteTreeNode;
-
public class SitetreeModule extends AbstractInputModule {
-
- public static final String AUTHORING_NODE = "authoring-node";
- public static final String LIVE_NODE = "live-node";
- public static final String TRASH_NODE = "trash-node";
- public static final String ARCHIVE_NODE = "archive-node";
- public static final String FIRST_CHILD_ID = "first-child-id";
-
- protected static final String[] PARAMETER_NAMES = { AUTHORING_NODE, LIVE_NODE, TRASH_NODE, ARCHIVE_NODE, FIRST_CHILD_ID };
-
- /**
- * @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 {
-
- Object value = null;
-
- try {
- PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel);
- Publication publication = envelope.getPublication();
-
- if (name.equals(AUTHORING_NODE)) {
- SiteTree authoringTree = publication.getTree(Publication.AUTHORING_AREA);
- value = authoringTree.getNode(envelope.getDocument().getId());
+ public static final String AUTHORING_NODE = "authoring-node";
+ public static final String LIVE_NODE = "live-node";
+ public static final String TRASH_NODE = "trash-node";
+ public static final String ARCHIVE_NODE = "archive-node";
+ public static final String FIRST_CHILD_ID = "first-child-id";
+ protected static final String[] PARAMETER_NAMES = {AUTHORING_NODE, LIVE_NODE, TRASH_NODE, ARCHIVE_NODE, FIRST_CHILD_ID};
+ /**
+ * @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 {
+ Object value = null;
+ try{
+ PageEnvelope envelope = PageEnvelope.getCurrent();
+ Publication publication = envelope.getPublication();
+ if(name.equals(AUTHORING_NODE)){
+ SiteTree authoringTree = publication.getTree(Publication.AUTHORING_AREA);
+ value = authoringTree.getNode(envelope.getDocument().getId());
+ }
+ if(name.equals(LIVE_NODE)){
+ SiteTree liveTree = publication.getTree(Publication.LIVE_AREA);
+ value = liveTree.getNode(envelope.getDocument().getId());
+ }
+ if(name.equals(TRASH_NODE)){
+ SiteTree trashTree = publication.getTree(Publication.TRASH_AREA);
+ value = trashTree.getNode(envelope.getDocument().getId());
+ }
+ if(name.equals(ARCHIVE_NODE)){
+ SiteTree archiveTree = publication.getTree(Publication.ARCHIVE_AREA);
+ value = archiveTree.getNode(envelope.getDocument().getId());
+ }
+ if(name.equals(FIRST_CHILD_ID)){
+ SiteTree siteTree = publication.getTree(envelope.getDocument().getArea());
+ SiteTreeNode node = siteTree.getNode(envelope.getDocument().getId());
+ SiteTreeNode[] children = node.getChildren(envelope.getDocument().getLanguage());
+ if(children.length > 0){
+ value = children[0].getId();
+ }else{
+ value = null;
}
-
- if (name.equals(LIVE_NODE)) {
- SiteTree liveTree = publication.getTree(Publication.LIVE_AREA);
- value = liveTree.getNode(envelope.getDocument().getId());
- }
-
- if (name.equals(TRASH_NODE)) {
- SiteTree trashTree = publication.getTree(Publication.TRASH_AREA);
- value = trashTree.getNode(envelope.getDocument().getId());
- }
-
- if (name.equals(ARCHIVE_NODE)) {
- SiteTree archiveTree = publication.getTree(Publication.ARCHIVE_AREA);
- value = archiveTree.getNode(envelope.getDocument().getId());
- }
-
- if (name.equals(FIRST_CHILD_ID)) {
- SiteTree siteTree = publication.getTree(envelope.getDocument().getArea());
- SiteTreeNode node = siteTree.getNode(envelope.getDocument().getId());
- SiteTreeNode[] children = node.getChildren(envelope.getDocument().getLanguage());
- if (children.length > 0){
- value = children[0].getId();
- } else {
- value = null;
- }
- }
-
- } catch (Exception e) {
- throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
- }
-
- return value;
- }
-
- /**
- * @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 Arrays.asList(PARAMETER_NAMES).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;
- }
-
+ }
+ }catch(Exception e){
+ throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
+ }
+ return value;
+ }
+ /**
+ * @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 Arrays.asList(PARAMETER_NAMES).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;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/Usecase2ModuleModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/Usecase2ModuleModule.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/Usecase2ModuleModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/Usecase2ModuleModule.java Sat Mar 8 14:58:32 2008
@@ -13,6 +13,7 @@
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.ContextHelper;
import org.apache.lenya.cms.publication.PageEnvelope;
+import org.apache.lenya.cms.publication.PageEnvelopeException;
/**
* Converts querystring Usecases into Module format.
*
@@ -21,16 +22,19 @@
public class Usecase2ModuleModule extends AbstractPageEnvelopeModule implements Serviceable, Contextualizable, ThreadSafe {
private org.apache.avalon.framework.context.Context context;
/**
- * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
- * org.apache.avalon.framework.configuration.Configuration,
- * java.util.Map)
+ * @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 {
if(getLogger().isDebugEnabled()){
getLogger().debug("Resolving [" + name + "]");
}
String resolvedUri = name;
- PageEnvelope pe = getEnvelope(objectModel);
+ PageEnvelope pe;
+ try{
+ pe = PageEnvelope.getCurrent();
+ }catch(PageEnvelopeException e){
+ throw new ConfigurationException("Resolving page envelope failed: ", e);
+ }
String publication = pe.getPublication().getId();
Map contextmap = ContextHelper.getObjectModel(context);
org.apache.cocoon.environment.http.HttpRequest req = (org.apache.cocoon.environment.http.HttpRequest) contextmap.get("request");
@@ -70,16 +74,13 @@
return resolvedUri;
}
/**
- * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeNames(org.apache.avalon.framework.configuration.Configuration,
- * java.util.Map)
+ * @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)
+ * @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)};
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/WorkflowModule.java Sat Mar 8 14:58:32 2008
@@ -14,90 +14,67 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.cocoon.components.modules.input;
-
import java.util.Arrays;
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.cocoon.components.modules.input.AbstractInputModule;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.workflow.CMSHistory;
import org.apache.lenya.cms.workflow.WorkflowFactory;
import org.apache.lenya.workflow.WorkflowInstance;
-
public class WorkflowModule extends AbstractInputModule {
-
- public static final String STATE = "state";
- public static final String VARIABLE_PREFIX = "variable.";
- public static final String HISTORY_PATH = "history-path";
-
- static final String[] PARAMETER_NAMES = { STATE, HISTORY_PATH };
-
- /**
- * @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 {
-
- Object value = null;
-
-
- try {
- PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel);
- Document document = envelope.getDocument();
-
- WorkflowFactory factory = WorkflowFactory.newInstance();
- if (factory.hasWorkflow(document)) {
- WorkflowInstance instance = factory.buildInstance(document);
- if (name.equals(STATE)) {
- value = instance.getCurrentState().toString();
- }
- else if (name.startsWith(VARIABLE_PREFIX)) {
- String variableName = name.substring(VARIABLE_PREFIX.length());
- String[] variableNames = instance.getWorkflow().getVariableNames();
- if (Arrays.asList(variableNames).contains(variableName)) {
- value = Boolean.valueOf(instance.getValue(variableName));
- }
- }
- else if (name.equals(HISTORY_PATH)) {
- value = ((CMSHistory) WorkflowFactory.getHistory(document)).getHistoryPath();
- }
- else {
- throw new ConfigurationException("The attribute [" + name + "] is not supported!");
- }
+ public static final String STATE = "state";
+ public static final String VARIABLE_PREFIX = "variable.";
+ public static final String HISTORY_PATH = "history-path";
+ static final String[] PARAMETER_NAMES = {STATE, HISTORY_PATH};
+ /**
+ * @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 {
+ Object value = null;
+ try{
+ PageEnvelope envelope = PageEnvelope.getCurrent();
+ Document document = envelope.getDocument();
+ WorkflowFactory factory = WorkflowFactory.newInstance();
+ if(factory.hasWorkflow(document)){
+ WorkflowInstance instance = factory.buildInstance(document);
+ if(name.equals(STATE)){
+ value = instance.getCurrentState().toString();
+ }else if(name.startsWith(VARIABLE_PREFIX)){
+ String variableName = name.substring(VARIABLE_PREFIX.length());
+ String[] variableNames = instance.getWorkflow().getVariableNames();
+ if(Arrays.asList(variableNames).contains(variableName)){
+ value = Boolean.valueOf(instance.getValue(variableName));
+ }
+ }else if(name.equals(HISTORY_PATH)){
+ value = ((CMSHistory) WorkflowFactory.getHistory(document)).getHistoryPath();
+ }else{
+ throw new ConfigurationException("The attribute [" + name + "] is not supported!");
}
- } catch (ConfigurationException e) {
- throw e;
- } catch (Exception e) {
- throw new ConfigurationException("Resolving attribute failed: ", e);
- }
- return value;
- }
-
- /**
- * @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 Arrays.asList(PARAMETER_NAMES).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;
- }
-
+ }
+ }catch(ConfigurationException e){
+ throw e;
+ }catch(Exception e){
+ throw new ConfigurationException("Resolving attribute failed: ", e);
+ }
+ return value;
+ }
+ /**
+ * @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 Arrays.asList(PARAMETER_NAMES).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;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/source/impl/VirtualSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/source/impl/VirtualSourceFactory.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/source/impl/VirtualSourceFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/source/impl/VirtualSourceFactory.java Sat Mar 8 14:58:32 2008
@@ -1,5 +1,4 @@
package org.apache.lenya.cms.cocoon.components.source.impl;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@@ -7,48 +6,45 @@
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceFactory;
import org.apache.excalibur.source.SourceNotFoundException;
-
+import org.apache.lenya.util.Globals;
public class VirtualSourceFactory implements SourceFactory, ThreadSafe {
- static private Map sources = new HashMap();
- static private Random random = new Random();
- public Source getSource(String plocation, Map parameters) throws SourceNotFoundException {
- String location = plocation;
- // System.out.println("VS LOC=" + location);
- int pos = location.lastIndexOf("/");
- if ((pos > -1) && (pos + 1 < location.length()))
- location = location.substring(pos + 1);
- pos = location.lastIndexOf(":");
- if ((pos > -1) && (pos + 1 < location.length()))
- location = location.substring(pos + 1);
- if (sources.containsKey(location))
- return (Source) sources.get(location);
- throw new SourceNotFoundException("VirtualSource not found: " + location);
- }
- public void release(Source source1) {
- sources = null;
- }
- static public String addSource(Source source) {
- return addSource(reserve(), source);
- }
- static public String addSource(String key, Source source) {
- sources.put(key, source);
- return key;
- }
- static public synchronized String reserve() {
- String key = Integer.toString(random.nextInt(1000)) + getDateString();
- while (hasKey(key))
- key = key + Integer.toString(random.nextInt(1000));
- sources.put(key, null);
- return key;
- }
- static public void releaseSource(String key) {
- if (hasKey(key))
- sources.remove(key);
- }
- static public boolean hasKey(String key) {
- return sources.containsKey(key);
- }
- static private String getDateString() {
- return Long.toString(new java.util.Date().getTime());
- }
+ static private Map sources = new HashMap();
+ static private Random random = new Random();
+ public Source getSource(String plocation, Map parameters) throws SourceNotFoundException {
+ String location = plocation;
+ // System.out.println("VS LOC=" + location);
+ int pos = location.lastIndexOf("/");
+ if((pos > -1) && (pos + 1 < location.length()))
+ location = location.substring(pos + 1);
+ pos = location.lastIndexOf(":");
+ if((pos > -1) && (pos + 1 < location.length()))
+ location = location.substring(pos + 1);
+ if(sources.containsKey(location))
+ return (Source) sources.get(location);
+ throw new SourceNotFoundException("VirtualSource not found: " + location);
+ }
+ public void release(Source source1) {
+ sources = null;
+ }
+ static public String addSource(Source source) {
+ return addSource(reserve(), source);
+ }
+ static public String addSource(String key, Source source) {
+ sources.put(key, source);
+ return key;
+ }
+ static public synchronized String reserve() {
+ String key = Integer.toString(random.nextInt(1000)) + Globals.getDateString();
+ while(hasKey(key))
+ key = key + Integer.toString(random.nextInt(1000));
+ sources.put(key, null);
+ return key;
+ }
+ static public void releaseSource(String key) {
+ if(hasKey(key))
+ sources.remove(key);
+ }
+ static public boolean hasKey(String key) {
+ return sources.containsKey(key);
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java Sat Mar 8 14:58:32 2008
@@ -33,7 +33,6 @@
import org.apache.lenya.cms.publication.DocumentHelper;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.rc.FileReservedCheckInException;
import org.apache.lenya.cms.rc.RCEnvironment;
@@ -95,8 +94,7 @@
* when something went wrong.
*/
public PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException {
- PageEnvelopeFactory factory = PageEnvelopeFactory.getInstance();
- return factory.getPageEnvelope(cocoon.getObjectModel());
+ return PageEnvelope.getCurrent();
}
/**
* Returns the request URI of the current request.
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SiteTreeGenerator.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SiteTreeGenerator.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SiteTreeGenerator.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SiteTreeGenerator.java Sat Mar 8 14:58:32 2008
@@ -22,7 +22,6 @@
import java.io.IOException;
import java.io.Serializable;
import java.util.Map;
-
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java Sat Mar 8 14:58:32 2008
@@ -14,14 +14,10 @@
* limitations under the License.
*
*/
-
/* @version $Id$*/
-
package org.apache.lenya.cms.cocoon.generation;
-
import java.io.IOException;
import java.util.Map;
-
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.ObjectModelHelper;
@@ -30,467 +26,334 @@
import org.apache.cocoon.generation.AbstractGenerator;
import org.apache.lenya.cms.publication.Label;
import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.SiteTree;
import org.apache.lenya.cms.publication.SiteTreeException;
import org.apache.lenya.cms.publication.SiteTreeNode;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
-
/**
- * Generates a fragment of the XML from the sitetree, corresponding to a given
- * node. The node is specified by the sitemap parameters area/documentid. If the
- * sitemap parameter initialTree is true, the top nodes of the tree will be
- * generated and the node given by the sitemap parameters area/documentid will
- * be unfolded. If initialTree is false, only the children of the selected node
- * will be generated.
- *
+ * Generates a fragment of the XML from the sitetree, corresponding to a given node. The node is specified by the sitemap parameters area/documentid. If the sitemap parameter initialTree is true, the top nodes of the tree will be generated and the node given by the sitemap parameters area/documentid will be unfolded. If initialTree is false, only the children of the selected node will be generated.
+ *
*/
public class SitetreeFragmentGenerator extends AbstractGenerator {
-
- protected Publication publication;
-
- /** Parameter which denotes the documentid of the clicked node */
- protected String documentid;
-
- /** Parameter which denotes the area of the clicked node */
- protected String area;
-
- /**
- * Parameter which decides if the initial tree with the root nodes is
- * generated
- */
- protected boolean initialTree;
-
- /**
- * Parameter which denotes a comma-separated list of areas, for which the
- * xml will be generated.
- */
- protected String[] areas = null;
-
- /**
- * Convenience object, so we don't need to create an AttributesImpl for
- * every element.
- */
- protected AttributesImpl attributes;
-
- protected static final String PARAM_AREA = "area";
-
- protected static final String PARAM_DOCUMENTID = "documentid";
-
- protected static final String PARAM_INITIAL = "initial";
-
- protected static final String PARAM_AREAS = "areas";
-
- /** The URI of the namespace of this generator. */
- protected static final String URI = "http://apache.org/cocoon/lenya/sitetree/1.0";
-
- protected static final String XML_URI = "http://www.w3.org/XML/1998/namespace";
-
- /** The namespace prefix for this namespace. */
- protected static final String PREFIX = "site";
-
- protected static final String XML_PREFIX = "xml";
-
- protected static final String NODE_NODE = "node";
-
- protected static final String NODE_LABEL = "label";
-
- protected static final String NODE_SITE = "site";
-
- protected static final String NODE_FRAGMENT = "fragment";
-
- protected static final String ATTR_ID = "id";
-
- protected static final String ATTR_FOLDER = "folder";
-
- protected static final String ATTR_AREA = "area";
-
- protected static final String ATTR_LABEL = "label";
-
- protected static final String ATTR_VISIBLEINNAV = "visibleinnav";
-
- protected static final String ATTR_LINK = "link";
-
- protected static final String ATTR_BASE = "base";
-
- protected static final String ATTR_SUFFIX = "suffix";
-
- protected static final String ATTR_HREF = "href";
-
- protected static final String ATTR_LANG = "lang";
-
- /**
- * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
- * java.util.Map, java.lang.String,
- * org.apache.avalon.framework.parameters.Parameters)
- */
- public void setup(SourceResolver resolver, Map objectModel, String src,
- Parameters par) throws ProcessingException, SAXException,
- IOException {
- super.setup(resolver, objectModel, src, par);
-
- PageEnvelope envelope = null;
-
- if (getLogger().isDebugEnabled()) {
- Request request = ObjectModelHelper.getRequest(objectModel);
- getLogger().debug(
- "Resolving page envelope for URL ["
- + request.getRequestURI() + "]");
- }
-
- this.area = par.getParameter(PARAM_AREA, null);
- this.documentid = par.getParameter(PARAM_DOCUMENTID, null);
-
- if (par.isParameter(PARAM_INITIAL)) {
- this.initialTree = Boolean.valueOf(
- par.getParameter(PARAM_INITIAL, null)).booleanValue();
- } else {
- this.initialTree = false;
- }
-
- if (par.isParameter(PARAM_AREAS)) {
- String parAreas = par.getParameter(PARAM_AREAS, null);
- this.areas = parAreas.split(",");
- } else {
- String temp[] = { "authoring", "archive", "trash" };
- this.areas = temp;
- }
-
- if (this.getLogger().isDebugEnabled()) {
- this.getLogger().debug("Parameter area: " + this.area);
- this.getLogger().debug("Parameter documentid: " + this.documentid);
- this.getLogger()
- .debug("Parameter initialTree: " + this.initialTree);
- String areasStr = "";
- for (int i = 0; i < this.areas.length; i++)
- areasStr += this.areas[i] + " ";
- this.getLogger().debug("Parameter areas: " + areasStr);
- }
-
- try {
- envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(
- objectModel);
- } catch (Exception e) {
- throw new ProcessingException("Resolving page envelope failed: ", e);
- }
-
- this.publication = envelope.getPublication();
- this.attributes = new AttributesImpl();
-
- }
-
- /**
- * @see org.apache.cocoon.generation.Generator#generate()
- */
- public void generate() throws IOException, SAXException,
- ProcessingException {
-
- try {
-
- this.contentHandler.startDocument();
- this.contentHandler.startPrefixMapping(PREFIX, URI);
-
- attributes.clear();
- if (!initialTree) {
- attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA",
- this.area);
- attributes.addAttribute("", ATTR_BASE, ATTR_BASE, "CDATA",
- this.documentid);
+ protected Publication publication;
+ /** Parameter which denotes the documentid of the clicked node */
+ protected String documentid;
+ /** Parameter which denotes the area of the clicked node */
+ protected String area;
+ /**
+ * Parameter which decides if the initial tree with the root nodes is generated
+ */
+ protected boolean initialTree;
+ /**
+ * Parameter which denotes a comma-separated list of areas, for which the xml will be generated.
+ */
+ protected String[] areas = null;
+ /**
+ * Convenience object, so we don't need to create an AttributesImpl for every element.
+ */
+ protected AttributesImpl attributes;
+ protected static final String PARAM_AREA = "area";
+ protected static final String PARAM_DOCUMENTID = "documentid";
+ protected static final String PARAM_INITIAL = "initial";
+ protected static final String PARAM_AREAS = "areas";
+ /** The URI of the namespace of this generator. */
+ protected static final String URI = "http://apache.org/cocoon/lenya/sitetree/1.0";
+ protected static final String XML_URI = "http://www.w3.org/XML/1998/namespace";
+ /** The namespace prefix for this namespace. */
+ protected static final String PREFIX = "site";
+ protected static final String XML_PREFIX = "xml";
+ protected static final String NODE_NODE = "node";
+ protected static final String NODE_LABEL = "label";
+ protected static final String NODE_SITE = "site";
+ protected static final String NODE_FRAGMENT = "fragment";
+ protected static final String ATTR_ID = "id";
+ protected static final String ATTR_FOLDER = "folder";
+ protected static final String ATTR_AREA = "area";
+ protected static final String ATTR_LABEL = "label";
+ protected static final String ATTR_VISIBLEINNAV = "visibleinnav";
+ protected static final String ATTR_LINK = "link";
+ protected static final String ATTR_BASE = "base";
+ protected static final String ATTR_SUFFIX = "suffix";
+ protected static final String ATTR_HREF = "href";
+ protected static final String ATTR_LANG = "lang";
+ /**
+ * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) throws ProcessingException, SAXException, IOException {
+ super.setup(resolver, objectModel, src, par);
+ PageEnvelope envelope = null;
+ if(getLogger().isDebugEnabled()){
+ Request request = ObjectModelHelper.getRequest(objectModel);
+ getLogger().debug("Resolving page envelope for URL [" + request.getRequestURI() + "]");
+ }
+ this.area = par.getParameter(PARAM_AREA, null);
+ this.documentid = par.getParameter(PARAM_DOCUMENTID, null);
+ if(par.isParameter(PARAM_INITIAL)){
+ this.initialTree = Boolean.valueOf(par.getParameter(PARAM_INITIAL, null)).booleanValue();
+ }else{
+ this.initialTree = false;
+ }
+ if(par.isParameter(PARAM_AREAS)){
+ String parAreas = par.getParameter(PARAM_AREAS, null);
+ this.areas = parAreas.split(",");
+ }else{
+ String temp[] = {"authoring", "archive", "trash"};
+ this.areas = temp;
+ }
+ if(this.getLogger().isDebugEnabled()){
+ this.getLogger().debug("Parameter area: " + this.area);
+ this.getLogger().debug("Parameter documentid: " + this.documentid);
+ this.getLogger().debug("Parameter initialTree: " + this.initialTree);
+ String areasStr = "";
+ for(int i = 0; i < this.areas.length; i++)
+ areasStr += this.areas[i] + " ";
+ this.getLogger().debug("Parameter areas: " + areasStr);
+ }
+ try{
+ envelope = PageEnvelope.getCurrent();
+ }catch(Exception e){
+ throw new ProcessingException("Resolving page envelope failed: ", e);
+ }
+ this.publication = envelope.getPublication();
+ this.attributes = new AttributesImpl();
+ }
+ /**
+ * @see org.apache.cocoon.generation.Generator#generate()
+ */
+ public void generate() throws IOException, SAXException, ProcessingException {
+ try{
+ this.contentHandler.startDocument();
+ this.contentHandler.startPrefixMapping(PREFIX, URI);
+ attributes.clear();
+ if(!initialTree){
+ attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA", this.area);
+ attributes.addAttribute("", ATTR_BASE, ATTR_BASE, "CDATA", this.documentid);
+ }
+ this.contentHandler.startElement(URI, NODE_FRAGMENT, PREFIX + ':' + NODE_FRAGMENT, this.attributes);
+ if(this.initialTree){
+ for(int i = 0; i < this.areas.length; i++){
+ generateFragmentInitial(this.areas[i]);
}
-
- this.contentHandler.startElement(URI, NODE_FRAGMENT, PREFIX + ':'
- + NODE_FRAGMENT, this.attributes);
-
- if (this.initialTree) {
- for (int i = 0; i < this.areas.length; i++) {
- generateFragmentInitial(this.areas[i]);
- }
- } else {
- generateFragment();
- }
-
- this.contentHandler.endElement(URI, NODE_FRAGMENT, PREFIX + ':'
- + NODE_FRAGMENT);
-
- this.contentHandler.endPrefixMapping(PREFIX);
- this.contentHandler.endDocument();
-
- } catch (SAXException e) {
- throw new ProcessingException(e);
- } catch (SiteTreeException e) {
- throw new ProcessingException(e);
- }
-
- }
-
- /**
- * Generates a fragment of the tree which contains the children of a given
- * node.
- *
- * @throws SiteTreeException
- * @throws SAXException
- * @throws ProcessingException
- */
- protected void generateFragment() throws SiteTreeException, SAXException,
- ProcessingException {
-
- SiteTree siteTree = null;
- if (!this.area.equals(Publication.AUTHORING_AREA)
- && !this.area.equals(Publication.ARCHIVE_AREA)
- && !this.area.equals(Publication.TRASH_AREA)
- && !this.area.equals(Publication.STAGING_AREA)
- && !this.area.equals(Publication.LIVE_AREA)) {
- throw new ProcessingException("Invalid area: " + this.area);
- }
- siteTree = publication.getTree(this.area);
-
- SiteTreeNode node = siteTree.getNode(this.documentid);
- if (this.getLogger().isDebugEnabled()) {
- this.getLogger().debug(
- "Node with documentid " + documentid + " found.");
- }
- if (node == null)
- throw new SiteTreeException("Node with documentid " + documentid
- + " not found.");
-
- SiteTreeNode[] children = node.getChildren();
-
- for (int i = 0; i < children.length; i++) {
- startNode(NODE_NODE, children[i]);
- addLabels(children[i]);
- endNode(NODE_NODE);
- }
- }
-
- /**
- * Generates the top node of the given area and then calls a recursive
- * method to traverse the tree, if the node given by area/documentid is in
- * this area.
- *
- * @param siteArea
- * @throws SiteTreeException
- * @throws SAXException
- * @throws ProcessingException
- */
- protected void generateFragmentInitial(String siteArea)
- throws SiteTreeException, SAXException, ProcessingException {
-
- SiteTree siteTree = publication.getTree(siteArea);
-
- String label = "";
- String isFolder = "";
-
- // FIXME: don't hardcode area label
- if (siteArea.equals(Publication.AUTHORING_AREA))
- label = "Authoring";
- if (siteArea.equals(Publication.ARCHIVE_AREA))
- label = "Archive";
- if (siteArea.equals(Publication.TRASH_AREA))
- label = "Trash";
- if (siteArea.equals(Publication.LIVE_AREA))
- label = "Live";
- if (siteArea.equals(Publication.STAGING_AREA))
- label = "Staging";
-
- if (siteTree.getTopNodes().length > 0)
- isFolder = "true";
- else
- isFolder = "false";
-
- this.attributes.clear();
- this.attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA",
- siteArea);
- this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA",
- isFolder);
- this.attributes
- .addAttribute("", ATTR_LABEL, ATTR_LABEL, "CDATA", label);
-
- startNode(NODE_SITE);
-
- if (area.equals(siteArea)) {
- generateFragmentRecursive(siteTree.getTopNodes(), this.documentid);
- }
-
- endNode(NODE_SITE);
- }
-
- /**
- * Follows the documentid to find the way in the sitetree to the specified
- * node and opens all folders on its way.
- *
- * @param nodes
- * @param docid
- * @throws SiteTreeException
- * @throws SAXException
- */
- protected void generateFragmentRecursive(SiteTreeNode[] nodes, String docid)
- throws SiteTreeException, SAXException {
- String nodeid;
- String childid;
-
- if (nodes == null)
- return;
- if (docid.startsWith("/"))
- docid = docid.substring(1);
- if (docid.indexOf("/") != -1) {
- nodeid = docid.substring(0, docid.indexOf("/"));
- childid = docid.substring(docid.indexOf("/") + 1);
- } else {
- nodeid = docid;
- childid = "";
- }
-
- for (int i = 0; i < nodes.length; i++) {
- startNode(NODE_NODE, nodes[i]);
- addLabels(nodes[i]);
- if (nodes[i].getId().equals(nodeid)) {
- generateFragmentRecursive(nodes[i].getChildren(), childid);
- }
- endNode(NODE_NODE);
- }
- }
-
- /**
- * Begins a named node and calls setNodeAttributes to set its attributes.
- *
- * @param nodeName
- * the name of the new node
- * @throws SAXException
- * if an error occurs while creating the node
- */
- protected void startNode(String nodeName) throws SAXException {
- this.contentHandler.startElement(URI, nodeName,
- PREFIX + ':' + nodeName, this.attributes);
- }
-
- /**
- * Begins a named node and calls setNodeAttributes to set its attributes.
- *
- * @param nodeName
- * the name of the new node
- * @param node
- * The attributes are taken from this node
- * @throws SAXException
- * if an error occurs while creating the node
- */
- protected void startNode(String nodeName, SiteTreeNode node)
- throws SAXException {
- setNodeAttributes(node);
- this.contentHandler.startElement(URI, nodeName,
- PREFIX + ':' + nodeName, this.attributes);
- }
-
- /**
- * Sets the attributes for a given node. Sets attributes id, href, folder,
- * suffix, basic-url, language-suffix.
- *
- * @param node
- * @throws SAXException
- * if an error occurs while setting the attributes
- */
- protected void setNodeAttributes(SiteTreeNode node) throws SAXException {
- this.attributes.clear();
-
- String id = node.getId();
- String isVisible = Boolean.toString(node.visibleInNav());
- String hasLink = Boolean.toString(node.hasLink());
- String href = node.getHref();
- String suffix = node.getSuffix();
- String isFolder = isFolder(node);
-
- if (this.getLogger().isDebugEnabled()) {
- this.getLogger().debug("adding attribute id: " + id);
- this.getLogger().debug(
- "adding attribute visibleinnav: " + isVisible);
- this.getLogger().debug("adding attribute link: " + hasLink);
- if (href != null)
- this.getLogger().debug("adding attribute href: " + href);
- if (suffix != null)
- this.getLogger().debug("adding attribute suffix: " + suffix);
- this.getLogger().debug("adding attribute folder: " + isFolder);
- }
- this.attributes.addAttribute("", ATTR_ID, ATTR_ID, "CDATA", id);
- this.attributes.addAttribute("", ATTR_VISIBLEINNAV, ATTR_VISIBLEINNAV,
- "CDATA", isVisible);
- this.attributes
- .addAttribute("", ATTR_LINK, ATTR_LINK, "CDATA", hasLink);
- if (href != null)
- this.attributes.addAttribute("", ATTR_HREF, ATTR_HREF, "CDATA",
- href);
- if (suffix != null)
- this.attributes.addAttribute("", ATTR_SUFFIX, ATTR_SUFFIX, "CDATA",
- suffix);
- this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA",
- isFolder);
- }
-
- /**
- * Returns a value to indicate whether a node is a folder (contains
- * subnodes). With the incremental sitetree loading, we sometimes load nodes
- * which are folders, but we don't load their children. But we still have to
- * know if it's a folder or not, i.e. if it can be opened.
- *
- * @param node
- * @return "true" or "false"
- */
- protected String isFolder(SiteTreeNode node) {
- if (node.getChildren().length > 0)
- return "true";
- else
- return "false";
- }
-
- /**
- * Ends the named node.
- *
- * @param nodeName
- * the name of the new node
- * @throws SAXException
- * if an error occurs while closing the node
- */
- protected void endNode(String nodeName) throws SAXException {
- this.contentHandler.endElement(URI, nodeName, PREFIX + ':' + nodeName);
- }
-
- /**
- * Finds all the label children of a node and adds them to the nav xml.
- *
- * @param node
- * @throws SAXException
- */
- protected void addLabels(SiteTreeNode node) throws SAXException {
- Label[] labels = node.getLabels();
-
- for (int i = 0; i < labels.length; i++) {
- String lang = labels[i].getLanguage();
- if (lang == null)
- lang = "";
- addLabel(labels[i].getLabel(), lang);
- }
- }
-
- /**
- * Adds a label element of a given language.
- *
- * @param label
- * the value of the label
- * @param language
- * the language of the label
- * @throws SAXException
- */
- protected void addLabel(String label, String language) throws SAXException {
- this.attributes.clear();
- this.attributes.addAttribute(XML_URI, ATTR_LANG, XML_PREFIX + ":"
- + ATTR_LANG, "CDATA", language);
-
- this.contentHandler.startElement(URI, NODE_LABEL, PREFIX + ':'
- + NODE_LABEL, this.attributes);
- char[] labelArray = label.toCharArray();
- this.contentHandler.characters(labelArray, 0, labelArray.length);
- this.contentHandler.endElement(URI, NODE_LABEL, PREFIX + ':'
- + NODE_LABEL);
- }
-
+ }else{
+ generateFragment();
+ }
+ this.contentHandler.endElement(URI, NODE_FRAGMENT, PREFIX + ':' + NODE_FRAGMENT);
+ this.contentHandler.endPrefixMapping(PREFIX);
+ this.contentHandler.endDocument();
+ }catch(SAXException e){
+ throw new ProcessingException(e);
+ }catch(SiteTreeException e){
+ throw new ProcessingException(e);
+ }
+ }
+ /**
+ * Generates a fragment of the tree which contains the children of a given node.
+ *
+ * @throws SiteTreeException
+ * @throws SAXException
+ * @throws ProcessingException
+ */
+ protected void generateFragment() throws SiteTreeException, SAXException, ProcessingException {
+ SiteTree siteTree = null;
+ if(!this.area.equals(Publication.AUTHORING_AREA) && !this.area.equals(Publication.ARCHIVE_AREA) && !this.area.equals(Publication.TRASH_AREA) && !this.area.equals(Publication.STAGING_AREA) && !this.area.equals(Publication.LIVE_AREA)){
+ throw new ProcessingException("Invalid area: " + this.area);
+ }
+ siteTree = publication.getTree(this.area);
+ SiteTreeNode node = siteTree.getNode(this.documentid);
+ if(this.getLogger().isDebugEnabled()){
+ this.getLogger().debug("Node with documentid " + documentid + " found.");
+ }
+ if(node == null)
+ throw new SiteTreeException("Node with documentid " + documentid + " not found.");
+ SiteTreeNode[] children = node.getChildren();
+ for(int i = 0; i < children.length; i++){
+ startNode(NODE_NODE, children[i]);
+ addLabels(children[i]);
+ endNode(NODE_NODE);
+ }
+ }
+ /**
+ * Generates the top node of the given area and then calls a recursive method to traverse the tree, if the node given by area/documentid is in this area.
+ *
+ * @param siteArea
+ * @throws SiteTreeException
+ * @throws SAXException
+ * @throws ProcessingException
+ */
+ protected void generateFragmentInitial(String siteArea) throws SiteTreeException, SAXException, ProcessingException {
+ SiteTree siteTree = publication.getTree(siteArea);
+ String label = "";
+ String isFolder = "";
+ // FIXME: don't hardcode area label
+ if(siteArea.equals(Publication.AUTHORING_AREA))
+ label = "Authoring";
+ if(siteArea.equals(Publication.ARCHIVE_AREA))
+ label = "Archive";
+ if(siteArea.equals(Publication.TRASH_AREA))
+ label = "Trash";
+ if(siteArea.equals(Publication.LIVE_AREA))
+ label = "Live";
+ if(siteArea.equals(Publication.STAGING_AREA))
+ label = "Staging";
+ if(siteTree.getTopNodes().length > 0)
+ isFolder = "true";
+ else
+ isFolder = "false";
+ this.attributes.clear();
+ this.attributes.addAttribute("", ATTR_AREA, ATTR_AREA, "CDATA", siteArea);
+ this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA", isFolder);
+ this.attributes.addAttribute("", ATTR_LABEL, ATTR_LABEL, "CDATA", label);
+ startNode(NODE_SITE);
+ if(area.equals(siteArea)){
+ generateFragmentRecursive(siteTree.getTopNodes(), this.documentid);
+ }
+ endNode(NODE_SITE);
+ }
+ /**
+ * Follows the documentid to find the way in the sitetree to the specified node and opens all folders on its way.
+ *
+ * @param nodes
+ * @param docid
+ * @throws SiteTreeException
+ * @throws SAXException
+ */
+ protected void generateFragmentRecursive(SiteTreeNode[] nodes, String docid) throws SiteTreeException, SAXException {
+ String nodeid;
+ String childid;
+ if(nodes == null)
+ return;
+ if(docid.startsWith("/"))
+ docid = docid.substring(1);
+ if(docid.indexOf("/") != -1){
+ nodeid = docid.substring(0, docid.indexOf("/"));
+ childid = docid.substring(docid.indexOf("/") + 1);
+ }else{
+ nodeid = docid;
+ childid = "";
+ }
+ for(int i = 0; i < nodes.length; i++){
+ startNode(NODE_NODE, nodes[i]);
+ addLabels(nodes[i]);
+ if(nodes[i].getId().equals(nodeid)){
+ generateFragmentRecursive(nodes[i].getChildren(), childid);
+ }
+ endNode(NODE_NODE);
+ }
+ }
+ /**
+ * Begins a named node and calls setNodeAttributes to set its attributes.
+ *
+ * @param nodeName
+ * the name of the new node
+ * @throws SAXException
+ * if an error occurs while creating the node
+ */
+ protected void startNode(String nodeName) throws SAXException {
+ this.contentHandler.startElement(URI, nodeName, PREFIX + ':' + nodeName, this.attributes);
+ }
+ /**
+ * Begins a named node and calls setNodeAttributes to set its attributes.
+ *
+ * @param nodeName
+ * the name of the new node
+ * @param node
+ * The attributes are taken from this node
+ * @throws SAXException
+ * if an error occurs while creating the node
+ */
+ protected void startNode(String nodeName, SiteTreeNode node) throws SAXException {
+ setNodeAttributes(node);
+ this.contentHandler.startElement(URI, nodeName, PREFIX + ':' + nodeName, this.attributes);
+ }
+ /**
+ * Sets the attributes for a given node. Sets attributes id, href, folder, suffix, basic-url, language-suffix.
+ *
+ * @param node
+ * @throws SAXException
+ * if an error occurs while setting the attributes
+ */
+ protected void setNodeAttributes(SiteTreeNode node) throws SAXException {
+ this.attributes.clear();
+ String id = node.getId();
+ String isVisible = Boolean.toString(node.visibleInNav());
+ String hasLink = Boolean.toString(node.hasLink());
+ String href = node.getHref();
+ String suffix = node.getSuffix();
+ String isFolder = isFolder(node);
+ if(this.getLogger().isDebugEnabled()){
+ this.getLogger().debug("adding attribute id: " + id);
+ this.getLogger().debug("adding attribute visibleinnav: " + isVisible);
+ this.getLogger().debug("adding attribute link: " + hasLink);
+ if(href != null)
+ this.getLogger().debug("adding attribute href: " + href);
+ if(suffix != null)
+ this.getLogger().debug("adding attribute suffix: " + suffix);
+ this.getLogger().debug("adding attribute folder: " + isFolder);
+ }
+ this.attributes.addAttribute("", ATTR_ID, ATTR_ID, "CDATA", id);
+ this.attributes.addAttribute("", ATTR_VISIBLEINNAV, ATTR_VISIBLEINNAV, "CDATA", isVisible);
+ this.attributes.addAttribute("", ATTR_LINK, ATTR_LINK, "CDATA", hasLink);
+ if(href != null)
+ this.attributes.addAttribute("", ATTR_HREF, ATTR_HREF, "CDATA", href);
+ if(suffix != null)
+ this.attributes.addAttribute("", ATTR_SUFFIX, ATTR_SUFFIX, "CDATA", suffix);
+ this.attributes.addAttribute("", ATTR_FOLDER, ATTR_FOLDER, "CDATA", isFolder);
+ }
+ /**
+ * Returns a value to indicate whether a node is a folder (contains subnodes). With the incremental sitetree loading, we sometimes load nodes which are folders, but we don't load their children. But we still have to know if it's a folder or not, i.e. if it can be opened.
+ *
+ * @param node
+ * @return "true" or "false"
+ */
+ protected String isFolder(SiteTreeNode node) {
+ if(node.getChildren().length > 0)
+ return "true";
+ else
+ return "false";
+ }
+ /**
+ * Ends the named node.
+ *
+ * @param nodeName
+ * the name of the new node
+ * @throws SAXException
+ * if an error occurs while closing the node
+ */
+ protected void endNode(String nodeName) throws SAXException {
+ this.contentHandler.endElement(URI, nodeName, PREFIX + ':' + nodeName);
+ }
+ /**
+ * Finds all the label children of a node and adds them to the nav xml.
+ *
+ * @param node
+ * @throws SAXException
+ */
+ protected void addLabels(SiteTreeNode node) throws SAXException {
+ Label[] labels = node.getLabels();
+ for(int i = 0; i < labels.length; i++){
+ String lang = labels[i].getLanguage();
+ if(lang == null)
+ lang = "";
+ addLabel(labels[i].getLabel(), lang);
+ }
+ }
+ /**
+ * Adds a label element of a given language.
+ *
+ * @param label
+ * the value of the label
+ * @param language
+ * the language of the label
+ * @throws SAXException
+ */
+ protected void addLabel(String label, String language) throws SAXException {
+ this.attributes.clear();
+ this.attributes.addAttribute(XML_URI, ATTR_LANG, XML_PREFIX + ":" + ATTR_LANG, "CDATA", language);
+ this.contentHandler.startElement(URI, NODE_LABEL, PREFIX + ':' + NODE_LABEL, this.attributes);
+ char[] labelArray = label.toCharArray();
+ this.contentHandler.characters(labelArray, 0, labelArray.length);
+ this.contentHandler.endElement(URI, NODE_LABEL, PREFIX + ':' + NODE_LABEL);
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java Sat Mar 8 14:58:32 2008
@@ -14,76 +14,60 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.cocoon.scheduler;
-
import java.util.HashMap;
import java.util.Map;
-
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.lenya.cms.cocoon.task.CocoonTaskWrapper;
import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.scheduler.LoadQuartzServlet;
import org.apache.lenya.cms.scheduler.ServletJob;
import org.apache.lenya.cms.task.TaskWrapper;
import org.apache.lenya.util.NamespaceMap;
-
public class SchedulerHelper {
-
- /**
- * Ctor.
- * @param objectModel The Cocoon component object model.
- * @param parameters The Cocoon component parameters.
- * @param logger The logger to use.
- */
- public SchedulerHelper(Map objectModel, Parameters parameters, Logger logger) {
- this.objectModel = objectModel;
- this.parameters = parameters;
- this.logger = logger;
- }
-
- private Logger logger;
- private Parameters parameters;
- private Map objectModel;
-
- /**
- * Creates the scheduler parameters.
- * @return A map.
- * @throws ProcessingException when something went wrong.
- */
- public Map createParameters() throws ProcessingException {
-
- Map map = new HashMap();
-
- try {
- TaskWrapper wrapper = new CocoonTaskWrapper(objectModel, parameters);
-
- logger.debug("Adding task wrapper parameters");
- Map wrapperParameters = wrapper.getParameters();
- map.putAll(wrapperParameters);
-
- NamespaceMap schedulerParameters = new NamespaceMap(LoadQuartzServlet.PREFIX);
-
- PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel);
-
- schedulerParameters.put(
- ServletJob.PARAMETER_DOCUMENT_URL,
- envelope.getDocument().getCompleteURL());
- schedulerParameters.put(
- LoadQuartzServlet.PARAMETER_PUBLICATION_ID,
- envelope.getPublication().getId());
- map.putAll(schedulerParameters.getPrefixedMap());
-
- } catch (Exception e) {
- throw new ProcessingException(e);
- }
-
- return map;
- }
-
+ /**
+ * Ctor.
+ *
+ * @param objectModel
+ * The Cocoon component object model.
+ * @param parameters
+ * The Cocoon component parameters.
+ * @param logger
+ * The logger to use.
+ */
+ public SchedulerHelper(Map objectModel, Parameters parameters, Logger logger) {
+ this.objectModel = objectModel;
+ this.parameters = parameters;
+ this.logger = logger;
+ }
+ private Logger logger;
+ private Parameters parameters;
+ private Map objectModel;
+ /**
+ * Creates the scheduler parameters.
+ *
+ * @return A map.
+ * @throws ProcessingException
+ * when something went wrong.
+ */
+ public Map createParameters() throws ProcessingException {
+ Map map = new HashMap();
+ try{
+ TaskWrapper wrapper = new CocoonTaskWrapper(objectModel, parameters);
+ logger.debug("Adding task wrapper parameters");
+ Map wrapperParameters = wrapper.getParameters();
+ map.putAll(wrapperParameters);
+ NamespaceMap schedulerParameters = new NamespaceMap(LoadQuartzServlet.PREFIX);
+ PageEnvelope envelope = PageEnvelope.getCurrent();
+ schedulerParameters.put(ServletJob.PARAMETER_DOCUMENT_URL, envelope.getDocument().getCompleteURL());
+ schedulerParameters.put(LoadQuartzServlet.PARAMETER_PUBLICATION_ID, envelope.getPublication().getId());
+ map.putAll(schedulerParameters.getPrefixedMap());
+ }catch(Exception e){
+ throw new ProcessingException(e);
+ }
+ return map;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java Sat Mar 8 14:58:32 2008
@@ -20,7 +20,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-
import org.apache.commons.io.CopyUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.excalibur.source.ModifiableSource;
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java Sat Mar 8 14:58:32 2008
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.util.Map;
-
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceSelector;
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java Sat Mar 8 14:58:32 2008
@@ -14,17 +14,13 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.cocoon.transformation;
-
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
@@ -36,244 +32,184 @@
import org.apache.lenya.cms.publication.DocumentBuilder;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.SiteTree;
import org.apache.lenya.cms.publication.SiteTreeNode;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
-
/**
- * This transformer lists the children of a document if the tag <namespaceURI:children>
- * is present in this document. The list of the children is in the form :
- * <namespaceURI:children>
- * <child href="....html>
- * <ci:include src="..." element="included"/>
- * </child>
- * ...
- * </namespaceURI:children>
- * Multiple language : if a child doesn't exist in the parent language, then the version
- * in the default language will be considered. If it doesn't exist too, any other existent
- * language will be considered.
+ * This transformer lists the children of a document if the tag <namespaceURI:children> is present in this document. The list of the children is in the form : <namespaceURI:children> <child href="....html> <ci:include src="..." element="included"/> </child> ... </namespaceURI:children> Multiple language : if a child doesn't exist in the parent language, then the version in the default language will be considered. If it doesn't exist too, any other existent language will be considered.
*/
public class DocumentIndexTransformer extends AbstractSAXTransformer implements Parameterizable {
-
- private String namespace;
- private String cIncludeNamespace;
-
- public static final String CHILDREN_ELEMENT = "children";
- public static final String ABSTRACT_ATTRIBUTE = "abstract";
-
- public static final String NAMESPACE = "http://apache.org/cocoon/lenya/documentindex/1.0";
- public static final String PREFIX = "index:";
-
- /** (non-Javadoc)
- * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
- */
- public void parameterize(Parameters parameters) throws ParameterException {
- this.namespace = parameters.getParameter("namespace", null);
- this.cIncludeNamespace = parameters.getParameter("cIncludeNamespace", null);
- }
-
- private Document document;
-
- private Publication publication;
-
- private String area;
-
- private DocumentBuilder builder;
-
- private SiteTree siteTree;
-
- /** (non-Javadoc)
- * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
- */
- public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
- throws ProcessingException, SAXException, IOException {
- try {
-
- super.setup(resolver, objectModel, src, parameters);
-
- parameterize(parameters);
-
- PageEnvelope envelope = null;
- envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel);
-
- setDocument(envelope.getDocument());
- setPublication(document.getPublication());
- setArea(document.getArea());
- setBuilder(document.getPublication().getDocumentBuilder());
- setSiteTree(publication.getTree(area));
-
- } catch (Exception e) {
- throw new ProcessingException(e);
- }
-
- }
-
- /** (non-Javadoc)
- * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
- */
- public void startElement(String uri, String localName, String raw, Attributes attr)
- throws SAXException {
-
- if (uri != null
- && uri.equals(namespace)
- && cIncludeNamespace != null
- && localName.equals(CHILDREN_ELEMENT)) {
-
- if (getLogger().isInfoEnabled()) {
- getLogger().info("Inserting index");
+ private String namespace;
+ private String cIncludeNamespace;
+ public static final String CHILDREN_ELEMENT = "children";
+ public static final String ABSTRACT_ATTRIBUTE = "abstract";
+ public static final String NAMESPACE = "http://apache.org/cocoon/lenya/documentindex/1.0";
+ public static final String PREFIX = "index:";
+ /**
+ * (non-Javadoc)
+ *
+ * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void parameterize(Parameters parameters) throws ParameterException {
+ this.namespace = parameters.getParameter("namespace", null);
+ this.cIncludeNamespace = parameters.getParameter("cIncludeNamespace", null);
+ }
+ private Document document;
+ private Publication publication;
+ private String area;
+ private DocumentBuilder builder;
+ private SiteTree siteTree;
+ /**
+ * (non-Javadoc)
+ *
+ * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters) throws ProcessingException, SAXException, IOException {
+ try{
+ super.setup(resolver, objectModel, src, parameters);
+ parameterize(parameters);
+ PageEnvelope envelope = null;
+ envelope = PageEnvelope.getCurrent();
+ setDocument(envelope.getDocument());
+ setPublication(document.getPublication());
+ setArea(document.getArea());
+ setBuilder(document.getPublication().getDocumentBuilder());
+ setSiteTree(publication.getTree(area));
+ }catch(Exception e){
+ throw new ProcessingException(e);
+ }
+ }
+ /**
+ * (non-Javadoc)
+ *
+ * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
+ */
+ public void startElement(String uri, String localName, String raw, Attributes attr) throws SAXException {
+ if(uri != null && uri.equals(namespace) && cIncludeNamespace != null && localName.equals(CHILDREN_ELEMENT)){
+ if(getLogger().isInfoEnabled()){
+ getLogger().info("Inserting index");
+ }
+ String cIncludePrefix = "";
+ if(!this.cIncludeNamespace.equals("")){
+ cIncludePrefix = "ci:";
+ }
+ String documentId = document.getId();
+ String language = document.getLanguage();
+ String defaultLanguage = publication.getDefaultLanguage();
+ SiteTreeNode[] children = siteTree.getNode(documentId).getChildren();
+ super.startElement(uri, localName, raw, attr);
+ for(int i = 0; i < children.length; i++){
+ String childId = documentId + "/" + children[i].getId();
+ // get child document with the same language than the parent document
+ String url = builder.buildCanonicalUrl(publication, area, childId, language);
+ Document doc;
+ try{
+ doc = builder.buildDocument(publication, url);
+ }catch(DocumentBuildException e){
+ throw new SAXException(e);
}
-
- String cIncludePrefix = "";
- if (!this.cIncludeNamespace.equals("")) {
- cIncludePrefix = "ci:";
+ File file = doc.getFile();
+ if(!file.exists()){
+ // get first the child document in the default language and then in any other existent language
+ getLogger().debug("There is no child file " + file.getAbsolutePath() + " in the same language as the parent document [" + language + "]");
+ // available language
+ String[] availableLanguages = null;
+ try{
+ availableLanguages = doc.getLanguages();
+ }catch(DocumentException e){
+ throw new SAXException(e);
+ }
+ List languages = new ArrayList();
+ for(int l = 0; l < availableLanguages.length; l++){
+ if(availableLanguages[l].equals(language)){
+ getLogger().debug("Do nothing because language was already tested: [" + availableLanguages[l] + "]");
+ }else if(availableLanguages[l].equals(defaultLanguage)){
+ languages.add(0, availableLanguages[l]);
+ }else{
+ languages.add(availableLanguages[l]);
+ }
+ }
+ int j = 0;
+ while(!file.exists() && j < languages.size()){
+ String newlanguage = (String) languages.get(j);
+ url = builder.buildCanonicalUrl(publication, area, childId, newlanguage);
+ try{
+ doc = builder.buildDocument(publication, url);
+ }catch(DocumentBuildException e){
+ throw new SAXException(e);
+ }
+ file = doc.getFile();
+ j++;
+ }
}
-
- String documentId = document.getId();
- String language = document.getLanguage();
- String defaultLanguage = publication.getDefaultLanguage();
- SiteTreeNode[] children = siteTree.getNode(documentId).getChildren();
-
- super.startElement(uri, localName, raw, attr);
-
- for (int i = 0; i < children.length; i++) {
- String childId = documentId + "/" + children[i].getId();
-
- //get child document with the same language than the parent document
- String url = builder.buildCanonicalUrl(publication, area, childId, language);
- Document doc;
- try {
- doc = builder.buildDocument(publication, url);
- } catch (DocumentBuildException e) {
- throw new SAXException(e);
- }
- File file = doc.getFile();
-
- if (!file.exists()) {
- //get first the child document in the default language and then in any other existent language
- getLogger().debug(
- "There is no child file "
- + file.getAbsolutePath()
- + " in the same language as the parent document ["
- + language
- + "]");
-
- //available language
- String[] availableLanguages = null;
- try {
- availableLanguages = doc.getLanguages();
- } catch (DocumentException e) {
- throw new SAXException(e);
- }
-
- List languages = new ArrayList();
- for (int l = 0; l < availableLanguages.length; l++) {
- if (availableLanguages[l].equals(language)) {
- getLogger().debug(
- "Do nothing because language was already tested: ["
- + availableLanguages[l]
- + "]");
- } else if (availableLanguages[l].equals(defaultLanguage)) {
- languages.add(0, availableLanguages[l]);
- } else {
- languages.add(availableLanguages[l]);
- }
- }
-
- int j = 0;
- while (!file.exists() && j < languages.size()) {
- String newlanguage = (String) languages.get(j);
- url = builder.buildCanonicalUrl(publication, area, childId, newlanguage);
- try {
- doc = builder.buildDocument(publication, url);
- } catch (DocumentBuildException e) {
- throw new SAXException(e);
- }
- file = doc.getFile();
-
- j++;
- }
- }
-
- if (file.exists()) {
- //create the tags for the child
- String path;
- try {
- path = file.getCanonicalPath();
- } catch (IOException e) {
- throw new SAXException(e);
- }
-
- AttributesImpl attribute = new AttributesImpl();
- attribute.addAttribute("", "href", "href", "", url);
- super.startElement(NAMESPACE, "child", PREFIX + "child", attribute);
-
- AttributesImpl attributes = new AttributesImpl();
- attributes.addAttribute("", "src", "src", "", path);
- attributes.addAttribute("", "element", "element", "", "included");
-
- super.startElement(
- this.cIncludeNamespace,
- "include",
- cIncludePrefix + "include",
- attributes);
- super.endElement(this.cIncludeNamespace, "include", cIncludePrefix + "include");
- super.endElement(NAMESPACE, "child", PREFIX + "child");
- } else {
- //do nothing for this child
- getLogger().warn("There are no existing file for the child with id " + childId);
- }
-
+ if(file.exists()){
+ // create the tags for the child
+ String path;
+ try{
+ path = file.getCanonicalPath();
+ }catch(IOException e){
+ throw new SAXException(e);
+ }
+ AttributesImpl attribute = new AttributesImpl();
+ attribute.addAttribute("", "href", "href", "", url);
+ super.startElement(NAMESPACE, "child", PREFIX + "child", attribute);
+ AttributesImpl attributes = new AttributesImpl();
+ attributes.addAttribute("", "src", "src", "", path);
+ attributes.addAttribute("", "element", "element", "", "included");
+ super.startElement(this.cIncludeNamespace, "include", cIncludePrefix + "include", attributes);
+ super.endElement(this.cIncludeNamespace, "include", cIncludePrefix + "include");
+ super.endElement(NAMESPACE, "child", PREFIX + "child");
+ }else{
+ // do nothing for this child
+ getLogger().warn("There are no existing file for the child with id " + childId);
}
- } else {
- super.startElement(uri, localName, raw, attr);
- }
-
- }
-
- /**
- * @return SiteTree The siteTree belonging to the area of the document
- */
- public SiteTree getSiteTree() {
- return siteTree;
- }
-
- /**
- * @param tree The siteTree of the area, which the document belongs.
- */
- public void setSiteTree(SiteTree tree) {
- siteTree = tree;
- }
-
- /**
- * @param string The area, which the document belongs.
- */
- public void setArea(String string) {
- area = string;
- }
-
- /**
- * @param builder The document builder.
- */
- public void setBuilder(DocumentBuilder builder) {
- this.builder = builder;
- }
-
- /**
- * @param document The document.
- */
- public void setDocument(Document document) {
- this.document = document;
- }
-
- /**
- * @param publication The publication, which the document belongs.
- */
- public void setPublication(Publication publication) {
- this.publication = publication;
- }
-
+ }
+ }else{
+ super.startElement(uri, localName, raw, attr);
+ }
+ }
+ /**
+ * @return SiteTree The siteTree belonging to the area of the document
+ */
+ public SiteTree getSiteTree() {
+ return siteTree;
+ }
+ /**
+ * @param tree
+ * The siteTree of the area, which the document belongs.
+ */
+ public void setSiteTree(SiteTree tree) {
+ siteTree = tree;
+ }
+ /**
+ * @param string
+ * The area, which the document belongs.
+ */
+ public void setArea(String string) {
+ area = string;
+ }
+ /**
+ * @param builder
+ * The document builder.
+ */
+ public void setBuilder(DocumentBuilder builder) {
+ this.builder = builder;
+ }
+ /**
+ * @param document
+ * The document.
+ */
+ public void setDocument(Document document) {
+ this.document = document;
+ }
+ /**
+ * @param publication
+ * The publication, which the document belongs.
+ */
+ public void setPublication(Publication publication) {
+ this.publication = publication;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/IncludeTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/IncludeTransformer.java?rev=635107&r1=635106&r2=635107&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/IncludeTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/IncludeTransformer.java Sat Mar 8 14:58:32 2008
@@ -22,9 +22,9 @@
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.cocoon.transformation.AbstractDOMTransformer;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.transformation.AbstractDOMTransformer;
import org.apache.excalibur.source.Source;
import org.w3c.dom.Document;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org