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/09/10 02:30:22 UTC
svn commit: r693670 [3/6] - in /lenya/branches/revolution/1.3.x: ./
src/java/org/apache/lenya/cms/ac/ src/java/org/apache/lenya/cms/ac/usecase/
src/java/org/apache/lenya/cms/ac/workflow/
src/java/org/apache/lenya/cms/ant/ src/java/org/apache/lenya/cms/...
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationContentDirModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationContentDirModule.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationContentDirModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationContentDirModule.java Tue Sep 9 17:30:20 2008
@@ -15,7 +15,6 @@
*
*/
package org.apache.lenya.cms.cocoon.components.modules.input;
-
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
@@ -26,81 +25,76 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.cocoon.components.modules.input.AbstractInputModule;
-import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.excalibur.source.SourceResolver;
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;
/**
* Gets the content directory of a specific publication and specific area
*/
public class PublicationContentDirModule extends AbstractInputModule implements Serviceable, Disposable {
-
- /* (non-Javadoc)
- * @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 directory path for [" + name + "]");
- }
- String[] pubidAndArea = name.split(",");
- if (pubidAndArea.length < 2) {
- throw new ConfigurationException("Invalid number of parameters: " + pubidAndArea.length
- + ". Expected pub, area.");
- }
-
- String id = pubidAndArea[0];
- String area = pubidAndArea[1];
- String contextPath = ObjectModelHelper.getContext(objectModel).getRealPath("");
-
- try {
- Publication pub = PublicationFactory.getPublication(id, contextPath);
- return pub.getContentDirectory(area);
- } catch (PublicationException e) {
- throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
- }
-
- }
-
- /* (non-Javadoc)
- * @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();
- }
-
- private ServiceManager manager;
- private SourceResolver resolver;
-
- /* (non-Javadoc)
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager manager) throws ServiceException {
- this.manager = manager;
- this.resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- }
-
- /* (non-Javadoc)
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose() {
- super.dispose();
- this.manager.release(this.resolver);
- this.resolver = null;
- this.manager = null;
- }
-
- /* (non-Javadoc)
- * @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 result = this.getAttribute(name, modeConf, objectModel);
- return (result == null ? null : new Object[] {result});
- }
-
+ /*
+ * (non-Javadoc)
+ *
+ * @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 directory path for [" + name + "]");
+ }
+ String[] pubidAndArea = name.split(",");
+ if(pubidAndArea.length < 2){
+ throw new ConfigurationException("Invalid number of parameters: " + pubidAndArea.length + ". Expected pub, area.");
+ }
+ String id = pubidAndArea[0];
+ String area = pubidAndArea[1];
+ try{
+ Publication publication = Globals.getPublication(id);
+ if(null == publication){
+ throw new PublicationException("UsecaseAuthorizer.authorize: No Publication.");
+ }
+ return publication.getContentDirectory(area);
+ }catch(PublicationException e){
+ throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
+ }
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @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();
+ }
+ private ServiceManager manager;
+ private SourceResolver resolver;
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ this.resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ super.dispose();
+ this.manager.release(this.resolver);
+ this.resolver = null;
+ this.manager = null;
+ }
+ /*
+ * (non-Javadoc)
+ *
+ * @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 result = this.getAttribute(name, modeConf, objectModel);
+ return(result == null ? null : new Object[]{result});
+ }
}
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=693670&r1=693669&r2=693670&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 Tue Sep 9 17:30:20 2008
@@ -5,6 +5,7 @@
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.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.Publication;
@@ -13,8 +14,9 @@
*
* @author solprovider
* @since 1.3
+ * @deprecated Use org.apache.lenya.cms.modules.PublicationInputModule. Will be deleted soon.
*/
-public class PublicationModule extends AbstractPageEnvelopeModule implements ThreadSafe {
+public class PublicationModule extends AbstractInputModule implements ThreadSafe {
// public class PublicationModule extends AbstractPageEnvelopeModule implements Serviceable, Contextualizable, ThreadSafe {
// private ServiceManager manager;
// private org.apache.avalon.framework.context.Context context;
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=693670&r1=693669&r2=693670&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 Tue Sep 9 17:30:20 2008
@@ -12,6 +12,7 @@
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.components.modules.input.AbstractInputModule;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
/**
@@ -19,7 +20,7 @@
*
* @author solprovider
*/
-public class Usecase2ModuleModule extends AbstractPageEnvelopeModule implements Serviceable, Contextualizable, ThreadSafe {
+public class Usecase2ModuleModule extends AbstractInputModule 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)
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=693670&r1=693669&r2=693670&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 Tue Sep 9 17:30:20 2008
@@ -14,11 +14,8 @@
* the License.
*
*/
-
/* $Id:$ */
-
package org.apache.lenya.cms.cocoon.generation;
-
import java.io.IOException;
import java.io.Serializable;
import java.util.Map;
@@ -34,179 +31,144 @@
import org.apache.lenya.cms.publication.Label;
import org.apache.lenya.cms.publication.LastModified;
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.SiteTree;
import org.apache.lenya.cms.publication.SiteTreeException;
import org.apache.lenya.cms.publication.SiteTreeNode;
+import org.apache.lenya.util.Globals;
import org.apache.log4j.Logger;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.NamespaceSupport;
-
/**
* Site tree generator.
*
* @version $Id:$
*/
-public class SiteTreeGenerator extends ServiceableGenerator implements Parameterizable,
- CacheableProcessingComponent {
- private static Logger log = Logger.getLogger(SiteTreeGenerator.class);
-
- protected final static String I18N_PX = "i18n";
- protected final static String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
-
- protected final static String CDATA = "CDATA";
-
- protected final static String SITE_ELEMENT = "site";
- protected final static String NODE_ELEMENT = "node";
- protected final static String LABEL_ELEMENT = "label";
-
- protected final static String LABEL_ATTRIBUTE = "label";
- protected final static String ATTR_ATTRIBUTE = "attr";
- protected final static String Q_ATTR_ATTRIBUTE = I18N_PX + ":" + ATTR_ATTRIBUTE;
- protected final static String ID_ATTRIBUTE = "id";
- protected final static String LANG_ATTRIBUTE = "lang";
- protected final static String HREF_ATTRIBUTE = "href";
- protected final static String LINK_ATTRIBUTE = "link";
- protected final static String VISIBLEINNAV_ATTRIBUTE = "visibleinnav";
- protected final static String SUFFIX_ATTRIBUTE = "suffix";
-
- protected final static String Q_LANG_ATTRIBUTE = "xml:lang";
-
- /**
- * The area of the site tree.
- */
- public final static String AREA_PARAMETER = "area";
-
- private final AttributesImpl atts = new AttributesImpl();
-
- SiteTree sitetree = null;
- String area = null;
-
- /**
- * No parameters implemented.
- * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
- */
- public void parameterize(Parameters parameters) throws ParameterException {
- }
-
- /**
- * @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 {
- log.debug("setup");
- try {
- Publication publication = PublicationFactory.getPublication(objectModel);
- area = par.getParameter(AREA_PARAMETER);
- sitetree = publication.getTree(area);
- } catch (PublicationException e) {
- throw new ProcessingException("Unable to get sitetree: publication exception.", e);
- } catch (ParameterException e) {
- throw new ProcessingException("Unable to get sitetree: parameter 'area' not found.", e);
- } catch (SiteTreeException e) {
- throw new ProcessingException("Unable to get sitetree.", e);
- }
- }
-
- /**
- * @see org.apache.cocoon.generation.Generator#generate()
- */
- public void generate() throws SAXException {
- log.debug("generate");
- // Start the document and set the namespace.
- this.contentHandler.startDocument();
- // Default namespace.
- this.contentHandler.startPrefixMapping("", SiteTree.NAMESPACE_URI);
- this.contentHandler.startPrefixMapping(I18N_PX, I18N_NS);
-
- generateSiteTree(sitetree);
-
- // End the document.
- this.contentHandler.endPrefixMapping("");
- this.contentHandler.endDocument();
- }
-
- private void generateSiteTree(SiteTree tree) throws SAXException {
- atts.clear();
- // TODO: Do not hardcode "Authoring" label!!!
- atts.addAttribute("", LABEL_ATTRIBUTE, LABEL_ATTRIBUTE, CDATA, "Authoring");
- atts.addAttribute(I18N_NS, ATTR_ATTRIBUTE, Q_ATTR_ATTRIBUTE, CDATA, "label");
-
- this.contentHandler.startElement(SiteTree.NAMESPACE_URI, SITE_ELEMENT, SITE_ELEMENT, atts);
-
- SiteTreeNode[] topNodes = tree.getTopNodes();
- for (int i = 0; i < topNodes.length; i++) {
- generateNodes(topNodes[i]);
- }
-
- this.contentHandler.endElement(SiteTree.NAMESPACE_URI, SITE_ELEMENT, SITE_ELEMENT);
- }
-
- private void generateNodes(SiteTreeNode node) throws SAXException {
- atts.clear();
- atts.addAttribute("", ID_ATTRIBUTE, ID_ATTRIBUTE, CDATA, node.getId());
- if (node.getHref() != null)
- atts.addAttribute("", HREF_ATTRIBUTE, HREF_ATTRIBUTE, CDATA, node.getHref());
- if (node.getSuffix() != null)
- atts.addAttribute("", SUFFIX_ATTRIBUTE, SUFFIX_ATTRIBUTE, CDATA, node.getSuffix());
- atts.addAttribute("", LINK_ATTRIBUTE, LINK_ATTRIBUTE, CDATA, Boolean.toString(node
- .hasLink()));
- atts.addAttribute("", VISIBLEINNAV_ATTRIBUTE, VISIBLEINNAV_ATTRIBUTE, CDATA, Boolean
- .toString(node.visibleInNav()));
-
- this.contentHandler.startElement(SiteTree.NAMESPACE_URI, NODE_ELEMENT, NODE_ELEMENT, atts);
-
- Label[] labels = node.getLabels();
- for (int i = 0; i < labels.length; i++)
- generateLabels(labels[i]);
- SiteTreeNode[] children = node.getChildren();
- for (int i = 0; i < children.length; i++)
- generateNodes(children[i]);
-
- this.contentHandler.endElement(SiteTree.NAMESPACE_URI, NODE_ELEMENT, NODE_ELEMENT);
- }
-
- private void generateLabels(Label label) throws SAXException {
- atts.clear();
- atts.addAttribute(NamespaceSupport.XMLNS, LANG_ATTRIBUTE, Q_LANG_ATTRIBUTE, CDATA, label
- .getLanguage());
-
- this.contentHandler
- .startElement(SiteTree.NAMESPACE_URI, LABEL_ELEMENT, LABEL_ELEMENT, atts);
- char[] labelA = label.getLabel().toCharArray();
- this.contentHandler.characters(labelA, 0, labelA.length);
- this.contentHandler.endElement(SiteTree.NAMESPACE_URI, LABEL_ELEMENT, LABEL_ELEMENT);
- }
-
- /**
- * Recycle the generator
- */
- public void recycle() {
- log.debug("recycle");
- super.recycle();
- sitetree = null;
- area = null;
- }
-
- /**
- * @see org.apache.cocoon.caching.CacheableProcessingComponent#getKey()
- */
- public Serializable getKey() {
- return area;
- }
-
- /**
- * @see org.apache.cocoon.caching.CacheableProcessingComponent#getValidity()
- */
- public SourceValidity getValidity() {
- // Check if sitetree implementation supports last modified
- if (!(sitetree instanceof LastModified)) {
- return null;
- } else {
- return new TimeStampValidity(((LastModified) sitetree).getLastModified());
- }
- }
+public class SiteTreeGenerator extends ServiceableGenerator implements Parameterizable, CacheableProcessingComponent {
+ private static Logger log = Logger.getLogger(SiteTreeGenerator.class);
+ protected final static String I18N_PX = "i18n";
+ protected final static String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
+ protected final static String CDATA = "CDATA";
+ protected final static String SITE_ELEMENT = "site";
+ protected final static String NODE_ELEMENT = "node";
+ protected final static String LABEL_ELEMENT = "label";
+ protected final static String LABEL_ATTRIBUTE = "label";
+ protected final static String ATTR_ATTRIBUTE = "attr";
+ protected final static String Q_ATTR_ATTRIBUTE = I18N_PX + ":" + ATTR_ATTRIBUTE;
+ protected final static String ID_ATTRIBUTE = "id";
+ protected final static String LANG_ATTRIBUTE = "lang";
+ protected final static String HREF_ATTRIBUTE = "href";
+ protected final static String LINK_ATTRIBUTE = "link";
+ protected final static String VISIBLEINNAV_ATTRIBUTE = "visibleinnav";
+ protected final static String SUFFIX_ATTRIBUTE = "suffix";
+ protected final static String Q_LANG_ATTRIBUTE = "xml:lang";
+ /**
+ * The area of the site tree.
+ */
+ public final static String AREA_PARAMETER = "area";
+ private final AttributesImpl atts = new AttributesImpl();
+ SiteTree sitetree = null;
+ String area = null;
+ /**
+ * No parameters implemented.
+ *
+ * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void parameterize(Parameters parameters) throws ParameterException {
+ }
+ /**
+ * @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 {
+ log.debug("setup");
+ try{
+ Publication publication = Globals.getPublication();
+ if(null == publication){
+ throw new ProcessingException("Unable to get sitetree: publication exception.");
+ }
+ area = par.getParameter(AREA_PARAMETER);
+ sitetree = publication.getTree(area);
+ }catch(ParameterException e){
+ throw new ProcessingException("Unable to get sitetree: parameter 'area' not found.", e);
+ }catch(SiteTreeException e){
+ throw new ProcessingException("Unable to get sitetree.", e);
+ }
+ }
+ /**
+ * @see org.apache.cocoon.generation.Generator#generate()
+ */
+ public void generate() throws SAXException {
+ log.debug("generate");
+ // Start the document and set the namespace.
+ this.contentHandler.startDocument();
+ // Default namespace.
+ this.contentHandler.startPrefixMapping("", SiteTree.NAMESPACE_URI);
+ this.contentHandler.startPrefixMapping(I18N_PX, I18N_NS);
+ generateSiteTree(sitetree);
+ // End the document.
+ this.contentHandler.endPrefixMapping("");
+ this.contentHandler.endDocument();
+ }
+ private void generateSiteTree(SiteTree tree) throws SAXException {
+ atts.clear();
+ // TODO: Do not hardcode "Authoring" label!!!
+ atts.addAttribute("", LABEL_ATTRIBUTE, LABEL_ATTRIBUTE, CDATA, "Authoring");
+ atts.addAttribute(I18N_NS, ATTR_ATTRIBUTE, Q_ATTR_ATTRIBUTE, CDATA, "label");
+ this.contentHandler.startElement(SiteTree.NAMESPACE_URI, SITE_ELEMENT, SITE_ELEMENT, atts);
+ SiteTreeNode[] topNodes = tree.getTopNodes();
+ for(int i = 0; i < topNodes.length; i++){
+ generateNodes(topNodes[i]);
+ }
+ this.contentHandler.endElement(SiteTree.NAMESPACE_URI, SITE_ELEMENT, SITE_ELEMENT);
+ }
+ private void generateNodes(SiteTreeNode node) throws SAXException {
+ atts.clear();
+ atts.addAttribute("", ID_ATTRIBUTE, ID_ATTRIBUTE, CDATA, node.getId());
+ if(node.getHref() != null) atts.addAttribute("", HREF_ATTRIBUTE, HREF_ATTRIBUTE, CDATA, node.getHref());
+ if(node.getSuffix() != null) atts.addAttribute("", SUFFIX_ATTRIBUTE, SUFFIX_ATTRIBUTE, CDATA, node.getSuffix());
+ atts.addAttribute("", LINK_ATTRIBUTE, LINK_ATTRIBUTE, CDATA, Boolean.toString(node.hasLink()));
+ atts.addAttribute("", VISIBLEINNAV_ATTRIBUTE, VISIBLEINNAV_ATTRIBUTE, CDATA, Boolean.toString(node.visibleInNav()));
+ this.contentHandler.startElement(SiteTree.NAMESPACE_URI, NODE_ELEMENT, NODE_ELEMENT, atts);
+ Label[] labels = node.getLabels();
+ for(int i = 0; i < labels.length; i++)
+ generateLabels(labels[i]);
+ SiteTreeNode[] children = node.getChildren();
+ for(int i = 0; i < children.length; i++)
+ generateNodes(children[i]);
+ this.contentHandler.endElement(SiteTree.NAMESPACE_URI, NODE_ELEMENT, NODE_ELEMENT);
+ }
+ private void generateLabels(Label label) throws SAXException {
+ atts.clear();
+ atts.addAttribute(NamespaceSupport.XMLNS, LANG_ATTRIBUTE, Q_LANG_ATTRIBUTE, CDATA, label.getLanguage());
+ this.contentHandler.startElement(SiteTree.NAMESPACE_URI, LABEL_ELEMENT, LABEL_ELEMENT, atts);
+ char[] labelA = label.getLabel().toCharArray();
+ this.contentHandler.characters(labelA, 0, labelA.length);
+ this.contentHandler.endElement(SiteTree.NAMESPACE_URI, LABEL_ELEMENT, LABEL_ELEMENT);
+ }
+ /**
+ * Recycle the generator
+ */
+ public void recycle() {
+ log.debug("recycle");
+ super.recycle();
+ sitetree = null;
+ area = null;
+ }
+ /**
+ * @see org.apache.cocoon.caching.CacheableProcessingComponent#getKey()
+ */
+ public Serializable getKey() {
+ return area;
+ }
+ /**
+ * @see org.apache.cocoon.caching.CacheableProcessingComponent#getValidity()
+ */
+ public SourceValidity getValidity() {
+ // Check if sitetree implementation supports last modified
+ if(!(sitetree instanceof LastModified)){
+ return null;
+ }else{
+ return new TimeStampValidity(((LastModified) sitetree).getLastModified());
+ }
+ }
}
\ No newline at end of file
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java Tue Sep 9 17:30:20 2008
@@ -19,7 +19,6 @@
import java.util.Iterator;
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
import org.apache.lenya.ac.AccessControlException;
@@ -28,13 +27,12 @@
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.impl.PolicyAuthorizer;
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.task.DefaultTaskWrapper;
import org.apache.lenya.cms.task.ExecutionException;
import org.apache.lenya.cms.task.Notifier;
import org.apache.lenya.cms.task.TaskWrapperParameters;
import org.apache.lenya.cms.task.WorkflowInvoker;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.util.ServletHelper;
import org.apache.log4j.Logger;
@@ -55,13 +53,11 @@
*/
public CocoonTaskWrapper(Map objectModel, Parameters parameters) throws ExecutionException {
log.debug("Creating CocoonTaskWrapper");
- Publication publication;
- try{
- publication = PublicationFactory.getPublication(objectModel);
- }catch(PublicationException e){
- throw new ExecutionException(e);
+ Publication publication = Globals.getPublication();
+ if(null == publication){
+ throw new ExecutionException("CocoonTaskWrapper: No Publication.");
}
- Request request = ObjectModelHelper.getRequest(objectModel);
+ Request request = Globals.getRequest();
initialize(parameters, publication, request);
}
/**
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java Tue Sep 9 17:30:20 2008
@@ -14,11 +14,8 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.cocoon.transformation;
-
import java.io.IOException;
import java.util.Map;
import org.apache.avalon.framework.activity.Disposable;
@@ -38,122 +35,98 @@
import org.apache.lenya.ac.impl.PolicyAuthorizer;
import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationFactory;
+import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.util.Globals;
import org.apache.lenya.util.ServletHelper;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
-
/**
- * This transformer disables menu items (by removing the href attribute)
- * which are not allowed with respect to the usecase policies.
+ * This transformer disables menu items (by removing the href attribute) which are not allowed with respect to the usecase policies.
*/
public class UsecaseMenuTransformer extends AbstractSAXTransformer implements Disposable {
-
- public static final String MENU_ELEMENT = "menu";
- public static final String ITEM_ELEMENT = "item";
- public static final String USECASE_ATTRIBUTE = "usecase";
- public static final String NAMESPACE = "http://apache.org/cocoon/lenya/usecase/1.0";
-
- /** (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 {
-
- Attributes attributes = attr;
-
- if (authorizer != null && localName.equals(ITEM_ELEMENT)) {
- String usecase = attr.getValue(NAMESPACE, USECASE_ATTRIBUTE);
-
- // filter item if usecase not allowed
- if (usecase != null) {
- getLogger().debug("Found usecase [" + usecase + "]");
-
- try {
- if (!authorizer.authorizeUsecase(usecase, roles, publication)) {
- getLogger().debug("Usecase not authorized");
- int hrefIndex = attributes.getIndex("href");
- if (hrefIndex > -1) {
- attributes = new AttributesImpl(attr);
- ((AttributesImpl) attributes).removeAttribute(hrefIndex);
- }
- }
- } catch (AccessControlException e) {
- throw new SAXException(e);
- }
+ public static final String MENU_ELEMENT = "menu";
+ public static final String ITEM_ELEMENT = "item";
+ public static final String USECASE_ATTRIBUTE = "usecase";
+ public static final String NAMESPACE = "http://apache.org/cocoon/lenya/usecase/1.0";
+ /**
+ * (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 {
+ Attributes attributes = attr;
+ if(authorizer != null && localName.equals(ITEM_ELEMENT)){
+ String usecase = attr.getValue(NAMESPACE, USECASE_ATTRIBUTE);
+ // filter item if usecase not allowed
+ if(usecase != null){
+ getLogger().debug("Found usecase [" + usecase + "]");
+ try{
+ if(!authorizer.authorizeUsecase(usecase, roles, publication)){
+ getLogger().debug("Usecase not authorized");
+ int hrefIndex = attributes.getIndex("href");
+ if(hrefIndex > -1){
+ attributes = new AttributesImpl(attr);
+ ((AttributesImpl) attributes).removeAttribute(hrefIndex);
+ }
+ }
+ }catch(AccessControlException e){
+ throw new SAXException(e);
}
- }
-
- super.startElement(uri, localName, raw, attributes);
-
- }
-
- private UsecaseAuthorizer authorizer;
- private ServiceSelector serviceSelector = null;
- private Role[] roles;
- private Publication publication;
- private AccessControllerResolver acResolver;
-
- /**
- * @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 {
-
- super.setup(resolver, objectModel, src, parameters);
-
- getLogger().debug("Setting up transformer");
-
- serviceSelector = null;
- acResolver = null;
- authorizer = null;
-
- Request request = ObjectModelHelper.getRequest(objectModel);
-
- try {
- roles = PolicyAuthorizer.getRoles(request);
-
- publication = PublicationFactory.getPublication(objectModel);
-
- serviceSelector =
- (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
- acResolver =
- (AccessControllerResolver) serviceSelector.select(
- AccessControllerResolver.DEFAULT_RESOLVER);
- getLogger().debug("Resolved AC resolver [" + acResolver + "]");
-
- String webappUrl = ServletHelper.getWebappURI(request);
- AccessController accessController = acResolver.resolveAccessController(webappUrl);
-
- if (accessController instanceof DefaultAccessController) {
- DefaultAccessController defaultAccessController =
- (DefaultAccessController) accessController;
- Authorizer[] authorizers = defaultAccessController.getAuthorizers();
- for (int i = 0; i < authorizers.length; i++) {
- if (authorizers[i] instanceof UsecaseAuthorizer) {
- authorizer = (UsecaseAuthorizer) authorizers[i];
- }
- }
+ }
+ }
+ super.startElement(uri, localName, raw, attributes);
+ }
+ private UsecaseAuthorizer authorizer;
+ private ServiceSelector serviceSelector = null;
+ private Role[] roles;
+ private Publication publication;
+ private AccessControllerResolver acResolver;
+ /**
+ * @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 {
+ super.setup(resolver, objectModel, src, parameters);
+ getLogger().debug("Setting up transformer");
+ serviceSelector = null;
+ acResolver = null;
+ authorizer = null;
+ Request request = ObjectModelHelper.getRequest(objectModel);
+ try{
+ roles = PolicyAuthorizer.getRoles(request);
+ publication = Globals.getPublication();
+ if(null == publication){
+ throw new PublicationException("UsecaseMenuTransformer.setup: No Publication.");
+ }
+ serviceSelector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
+ acResolver = (AccessControllerResolver) serviceSelector.select(AccessControllerResolver.DEFAULT_RESOLVER);
+ getLogger().debug("Resolved AC resolver [" + acResolver + "]");
+ String webappUrl = ServletHelper.getWebappURI(request);
+ AccessController accessController = acResolver.resolveAccessController(webappUrl);
+ if(accessController instanceof DefaultAccessController){
+ DefaultAccessController defaultAccessController = (DefaultAccessController) accessController;
+ Authorizer[] authorizers = defaultAccessController.getAuthorizers();
+ for(int i = 0; i < authorizers.length; i++){
+ if(authorizers[i] instanceof UsecaseAuthorizer){
+ authorizer = (UsecaseAuthorizer) authorizers[i];
+ }
}
-
- getLogger().debug("Using authorizer [" + authorizer + "]");
- } catch (Exception e) {
- throw new ProcessingException(e);
- }
- }
-
- /**
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose() {
- getLogger().debug("Disposing transformer");
- if (serviceSelector != null) {
- if (acResolver != null) {
- serviceSelector.release(acResolver);
- }
- manager.release(serviceSelector);
- }
- }
-
+ }
+ getLogger().debug("Using authorizer [" + authorizer + "]");
+ }catch(Exception e){
+ throw new ProcessingException(e);
+ }
+ }
+ /**
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ getLogger().debug("Disposing transformer");
+ if(serviceSelector != null){
+ if(acResolver != null){
+ serviceSelector.release(acResolver);
+ }
+ manager.release(serviceSelector);
+ }
+ }
}
Added: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/AbstractContentSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/AbstractContentSourceFactory.java?rev=693670&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/AbstractContentSourceFactory.java (added)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/AbstractContentSourceFactory.java Tue Sep 9 17:30:20 2008
@@ -0,0 +1,112 @@
+package org.apache.lenya.cms.content;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.Map;
+import java.util.StringTokenizer;
+import org.apache.avalon.framework.component.Component;
+import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.cocoon.components.CocoonComponentManager;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceFactory;
+import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceResolver;
+import org.apache.excalibur.source.SourceUtil;
+import org.apache.excalibur.source.URIAbsolutizer;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.util.Globals;
+/**
+ * @author solprovider
+ * @since 1.3
+ */
+public abstract class AbstractContentSourceFactory implements SourceFactory, ThreadSafe, URIAbsolutizer, Contextualizable {
+ protected static final int REQUEST_DATA = 0;
+ protected static final int REQUEST_META = 1;
+ protected static final int REQUEST_INFO = 2;
+ protected org.apache.avalon.framework.context.Context context;
+ // private String pubsPrefix;
+ // private DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+ protected SourceResolver resolver = null;
+ protected Publication publication;
+ // protected Content content;
+ private Location location;
+ protected ComponentManager manager;
+ public void contextualize(org.apache.avalon.framework.context.Context context) throws ContextException {
+ this.context = context;
+ }
+ public Source getSource(String src, Map parameters) throws IOException, MalformedURLException {
+ // System.out.println("\nAbstractContentSourceFactory.getSource " + src.toString());
+ try{
+ manager = CocoonComponentManager.getSitemapComponentManager();
+ try{
+ resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
+ }catch(org.apache.avalon.framework.component.ComponentException ce){
+ }
+ if(null == resolver){ throw new SourceNotFoundException("No Resolver: " + src); }
+ publication = Globals.getPublication();
+ // content = publication.getContent();
+ location = new Location(src); // Parse Location: Removes everything after first period, underscore, or exclamation mark.
+ String workLocation = location.getUnid();
+ // Decide Usage
+ StringTokenizer tokens = new StringTokenizer(workLocation, "/:", true);
+ if(!tokens.hasMoreTokens()){ throw new MalformedURLException("No UNID specified."); }
+ String token = tokens.nextToken();
+ if(workLocation.indexOf(":") > 0) token = tokens.nextToken(); // Remove protocol
+ int colonCount = 0;
+ while(token.equals(":")){
+ colonCount++;
+ token = (tokens.hasMoreTokens() ? tokens.nextToken() : "");
+ }
+ int slashCount = 0;
+ while(token.equals("/")){
+ slashCount++;
+ token = (tokens.hasMoreTokens() ? tokens.nextToken() : "");
+ }
+ // Sets request type without using constants
+ int requestType = colonCount - 1;
+ // Set request type from word overriding colon syntax.
+ boolean isFormat2 = false;
+ if(token.equals("DATA")){
+ requestType = REQUEST_DATA;
+ isFormat2 = true;
+ }else if(token.equals("META")){
+ requestType = REQUEST_META;
+ isFormat2 = true;
+ }else if(token.equals("INFO")){
+ requestType = REQUEST_INFO;
+ isFormat2 = true;
+ }
+ if(isFormat2){
+ token = tokens.nextToken();
+ int slashCount2 = 0;
+ while(token.equals("/")){
+ slashCount2++;
+ token = tokens.nextToken();
+ }
+ slashCount = (slashCount > slashCount2 ? slashCount : slashCount2);
+ }
+ // Rebuild unid
+ StringBuffer buffer = new StringBuffer();
+ for(int s = 0; s < slashCount; s++){
+ buffer.append("/");
+ }
+ buffer.append(token);
+ while(tokens.hasMoreTokens()){
+ buffer.append(tokens.nextToken());
+ }
+ location.setUnid(buffer.toString());
+ // ASSUME: UNID
+ return getResource(requestType, location);
+ }finally{
+ if(resolver != null) manager.release((Component) resolver);
+ }
+ }
+ abstract Source getResource(int requestType, Location location) throws MalformedURLException, IOException;
+ public void release(Source source1) {
+ }
+ public String absolutize(String baseURI, String location) {
+ return SourceUtil.absolutize(baseURI, location, false, false);
+ }
+}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Content.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Content.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Content.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Content.java Tue Sep 9 17:30:20 2008
@@ -5,9 +5,9 @@
* @since 1.3
*/
public interface Content {
- public static final String TYPE_FLAT = "flat";
public static final String TYPE_HIERARCHICAL = "hierarchical";
public static final String TYPE_DEFAULT = "all";
+ public static final String REVISION_DEFAULT = "live";
public String getURI(String unid, String language, String revision);
public String getMetaURI(String unid, String language, String revision);
public String getNewURI(String unid, String language);
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentInputModule.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentInputModule.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentInputModule.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentInputModule.java Tue Sep 9 17:30:20 2008
@@ -5,17 +5,16 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.lenya.cms.cocoon.components.modules.input.AbstractPageEnvelopeModule;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.PageEnvelopeException;
+import org.apache.cocoon.components.modules.input.AbstractInputModule;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.util.Globals;
/**
* Retrieves Content Variables from the appropriate Resource
*
* @author solprovider
* @since 1.3
*/
-public class ContentInputModule extends AbstractPageEnvelopeModule implements ThreadSafe {
+public class ContentInputModule extends AbstractInputModule implements ThreadSafe {
// public class ContentInputModule extends AbstractPageEnvelopeModule implements Serviceable, Contextualizable, ThreadSafe {
// private ServiceManager manager;
// private org.apache.avalon.framework.context.Context context;
@@ -23,20 +22,17 @@
* @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 {
+ // System.out.println("ContentInputModule.getAttribute " + name);
if(getLogger().isDebugEnabled()){
getLogger().debug("Resolving [" + name + "]");
}
- PageEnvelope pe;
- try{
- pe = PageEnvelope.getCurrent();
- }catch(PageEnvelopeException e){
- throw new ConfigurationException("Resolving page envelope failed: ", e);
+ Publication publication = Globals.getPublication();
+ if(null == publication){
+ System.out.println("ContentInputModule.getAttribute: Publication is null");
+ return "error";
}
- Publication pub = pe.getPublication();
- // String publication = pub.getId();
- Content content = pub.getContent();
+ Content content = publication.getContent();
String unid = "";
- // System.out.println("ContentInputModule name=" + name);
int pos = name.indexOf(":");
if(pos > 0){
unid = name.substring(pos + 1);
@@ -47,18 +43,14 @@
}
Resource resource = content.getResource(unid);
if(null == resource){
- System.out.println("ContentInputModule: No Resource NAME=" + name + " UNID=" + unid);
+ System.out.println("ContentInputModule.getAttribute: No Resource NAME=" + name + " UNID=" + unid);
}
if(name.equalsIgnoreCase("type")){
// System.out.println("ContentInputModule NAME=" + name + " UNID=" + unid + " TYPE=" + resource.getType());
return resource.getType();
}
- if(name.equalsIgnoreCase("doctype") || name.equalsIgnoreCase("documenttype")){
- return resource.getDocumentType();
- }
- if(name.equalsIgnoreCase("defaultlanguage")){
- return resource.getDefaultLanguage();
- }
+ if(name.equalsIgnoreCase("doctype") || name.equalsIgnoreCase("documenttype")){ return resource.getDocumentType(); }
+ if(name.equalsIgnoreCase("defaultlanguage")){ return resource.getDefaultLanguage(); }
return "";
}
/**
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentSourceFactory.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentSourceFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ContentSourceFactory.java Tue Sep 9 17:30:20 2008
@@ -1,24 +1,11 @@
package org.apache.lenya.cms.content;
import java.io.IOException;
import java.net.MalformedURLException;
-import java.util.Map;
import java.util.StringTokenizer;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceFactory;
import org.apache.excalibur.source.SourceNotFoundException;
-import org.apache.excalibur.source.SourceResolver;
-import org.apache.excalibur.source.SourceUtil;
-import org.apache.excalibur.source.URIAbsolutizer;
import org.apache.lenya.cms.cocoon.components.source.impl.StringSource;
-import org.apache.lenya.cms.publication.PageEnvelope;
-import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.content.flat.FlatDesign;
import org.w3c.dom.Document;
/**
* Implements content: protocol. <BR>
@@ -33,146 +20,68 @@
* @author solprovider
* @since 1.3
*/
-public class ContentSourceFactory implements SourceFactory, ThreadSafe, URIAbsolutizer, Contextualizable {
- private static final int REQUEST_DATA = 0;
- private static final int REQUEST_META = 1;
- private static final int REQUEST_INFO = 2;
- protected org.apache.avalon.framework.context.Context context;
- // private String servletContextPath;
- String pubsPrefix;
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- SourceResolver resolver = null;
- public void contextualize(org.apache.avalon.framework.context.Context context) throws ContextException {
- this.context = context;
- }
- public Source getSource(String location, Map parameters) throws IOException, MalformedURLException {
- String workLocation = location;
- int pos;
- // Map contextmap = ContextHelper.getObjectModel(context);
- // org.apache.cocoon.environment.http.HttpContext httpcontext = (org.apache.cocoon.environment.http.HttpContext) contextmap.get("context");
- // servletContextPath = httpcontext.getRealPath("");
- // TODO: Move resolver, pubsPrefix and other init out of getSource(). Make static?
- ComponentManager manager = CocoonComponentManager.getSitemapComponentManager();
- try{
- resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- }catch(org.apache.avalon.framework.component.ComponentException ce){
- }
- if(null == resolver){
- throw new SourceNotFoundException("No Resolver: " + location);
- }
- String uri = resolver.resolveURI("").getURI();
- pos = uri.indexOf("/pubs/");
- if(pos > 0){
- pubsPrefix = uri.substring(0, pos + 6);
- }else{
- pos = uri.indexOf("/modules/");
- if(pos > 0){
- pubsPrefix = uri.substring(0, pos) + "/pubs/";
- }
- }
- // String publication;
- // String contentpath;
- Publication pub;
- Content content;
- try{
- PageEnvelope envelope = PageEnvelope.getCurrent();
- pub = envelope.getPublication();
- // publication = pub.getId();
- content = pub.getContent();
- // contentpath = pub.getContentDirectory().getAbsolutePath() + File.separator;
- }catch(org.apache.lenya.cms.publication.PageEnvelopeException pee){
- throw new MalformedURLException("Could not get Publication ID.");
- }
- // Parse Location
- Location locationParser = new Location(workLocation);
- // Removes everything after first period, underscore, or exclamation mark.
- workLocation = locationParser.getUnid();
- // Decide Usage
- StringTokenizer tokens = new StringTokenizer(workLocation, "/:", true);
- if(!tokens.hasMoreTokens())
- throw new MalformedURLException("Nothing specified.");
- String token = tokens.nextToken();
- if(workLocation.indexOf(":") > 0)
- token = tokens.nextToken(); // Remove protocol
- int colonCount = 0;
- while(token.equals(":")){
- colonCount++;
- token = (tokens.hasMoreTokens() ? tokens.nextToken() : "");
- }
+public class ContentSourceFactory extends AbstractContentSourceFactory {
+ Source getResource(int requestType, Location location) throws MalformedURLException, IOException {
+ // System.out.println("ContentSourceFactory.getResource " + location.toString());
+ /** ******** Get Source (uses Content) ************ */
+ Content content = super.publication.getContent();
+ StringTokenizer tokens = new StringTokenizer(location.getUnid(), "/:", true);
int slashCount = 0;
+ String token = tokens.nextToken();
while(token.equals("/")){
slashCount++;
- token = (tokens.hasMoreTokens() ? tokens.nextToken() : "");
- }
- int requestType = colonCount - 1;
- boolean isFormat2 = false;
- if(token.equals("DATA")){
- requestType = REQUEST_DATA;
- isFormat2 = true;
- }else if(token.equals("META")){
- requestType = REQUEST_META;
- isFormat2 = true;
- }else if(token.equals("INFO")){
- requestType = REQUEST_INFO;
- isFormat2 = true;
- }
- if(isFormat2){
token = tokens.nextToken();
- int slashCount2 = 0;
- while(token.equals("/")){
- slashCount2++;
- token = tokens.nextToken();
- }
- slashCount = (slashCount > slashCount2 ? slashCount : slashCount2);
}
String structure = (2 < slashCount ? "" : token);
String unid = token;
StringBuffer buffer = new StringBuffer();
- while(tokens.hasMoreTokens())
+ while(tokens.hasMoreTokens()){
buffer.append(tokens.nextToken());
+ }
String fullid = buffer.toString();
- if((1 < slashCount) || (0 < fullid.length()))
+ if((1 < slashCount) || (0 < fullid.length())){
unid = content.getUNID(structure, fullid);
- // ASSUME: UNID
- /** ******** Get Source (uses Content) ************ */
+ }
+ // System.out.println("ContentSourceFactory.getResource unid=" + unid);
Source source;
if(REQUEST_INFO == requestType){
// TODO: Catch errors
Resource resource = content.getResource(unid);
if(resource == null){
- throw new SourceNotFoundException("Source not found (no Resource): " + location);
+ System.out.println("ContentSourceFactory.getSource Null Resource UNID=" + unid);
+ throw new SourceNotFoundException("Source not found (no Resource): " + location.toString());
}
Document doc = resource.getInfoDocument();
if(doc == null){
- throw new SourceNotFoundException("Source not found (no Document): " + location);
+ System.out.println("ContentSourceFactory.getSource Null Document UNID=" + unid);
+ throw new SourceNotFoundException("Source not found (no Document): " + location.toString());
}
source = new StringSource(manager, doc);
if(source == null){
- throw new SourceNotFoundException("Source not found (no Source): " + location);
+ System.out.println("ContentSourceFactory.getSource Null Source UNID=" + unid);
+ throw new SourceNotFoundException("Source not found (no Source): " + location.toString());
}
return source;
}
// Revision
- String revision = locationParser.getRevision();
+ String revision = location.getRevision();
if(0 == revision.length()){
- revision = "live";
+ revision = Content.REVISION_DEFAULT;
}
// Language
- String language = locationParser.getLanguage();
- if(language.length() < 1){
+ String language = location.getLanguage();
+ if((1 > language.length()) || (FlatDesign.DESIGN_LANGUAGE.equalsIgnoreCase(language))){
Resource resource = content.getResource(unid);
if(resource != null){
language = resource.getDefaultLanguage();
}
}
- if(language.length() < 1){
- language = pub.getDefaultLanguage();
+ if((1 > language.length()) || (FlatDesign.DESIGN_LANGUAGE.equalsIgnoreCase(language))){
+ language = publication.getDefaultLanguage();
}
if(REQUEST_META == requestType){
source = resolver.resolveURI(content.getMetaURI(unid, language, revision));
if(source.exists()){
- if(resolver != null)
- manager.release((Component) resolver);
return source;
}else{
throw new SourceNotFoundException("Source not found (no Meta Source): " + location);
@@ -180,20 +89,9 @@
}
String curi = content.getURI(unid, language, revision);
// System.out.println("ContentSourceFactory.getSource UNID=" + unid + " LANG=" + language + " REV=" + revision + " CURI=" + curi);
- if(curi.length() < 1){
- throw new SourceNotFoundException("Source not found (no URI): " + location + " UNID=" + unid + " LANG=" + language + " REV=" + revision);
- }
+ if(curi.length() < 1){ throw new SourceNotFoundException("Source not found (no URI): " + location + " UNID=" + unid + " LANG=" + language + " REV=" + revision); }
source = resolver.resolveURI(curi);
- if(resolver != null)
- manager.release((Component) resolver);
- if(source.exists()){
- return source;
- }
+ if(source.exists()){ return source; }
throw new SourceNotFoundException("Source not found: " + location + " (" + curi + ")");
}
- public void release(Source source1) {
- }
- public String absolutize(String baseURI, String location) {
- return SourceUtil.absolutize(baseURI, location, false, false);
- }
}
Added: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/DesignSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/DesignSourceFactory.java?rev=693670&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/DesignSourceFactory.java (added)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/DesignSourceFactory.java Tue Sep 9 17:30:20 2008
@@ -0,0 +1,73 @@
+package org.apache.lenya.cms.content;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.StringTokenizer;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.lenya.cms.cocoon.components.source.impl.StringSource;
+import org.apache.lenya.cms.content.flat.FlatDesign;
+import org.w3c.dom.Document;
+/**
+ * Implements content: protocol. <BR>
+ * This should call the Content API that calls a Content Impl. <BR>
+ * <BR>== Content API == <BR>
+ * Source getResourceByUNID(String unid, String translation, String revision) <BR>
+ * Source getResourceByID(String structure, String id, String translation, String revision) <BR>
+ * <BR>== Content Impls == <BR>
+ * ContentHierarchical (Lenya 1.2) <BR>
+ * ContentFlat (Lenya 1.3)
+ *
+ * @author solprovider
+ * @since 1.3
+ */
+public class DesignSourceFactory extends AbstractContentSourceFactory {
+ Source getResource(int requestType, Location location) throws MalformedURLException, IOException {
+ // System.out.println("DesignSourceFactory.getResource " + location.toString());
+ /** ******** Get Source (uses Content) ************ */
+ StringTokenizer tokens = new StringTokenizer(location.getUnid(), "/", true);
+ // int slashCount = 0;
+ String token = tokens.nextToken();
+ // Remove leading slashes
+ while(token.equals("/") && tokens.hasMoreTokens()){
+ // slashCount++;
+ token = tokens.nextToken();
+ }
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(token);
+ while(tokens.hasMoreTokens()){
+ buffer.append(tokens.nextToken());
+ }
+ String filename = buffer.toString();
+ Source source;
+ FlatDesign design = super.publication.getDesign();
+ if(REQUEST_INFO == requestType){
+ Resource resource = design.getDesign(filename);
+ if(resource == null){ throw new SourceNotFoundException("Source not found (no Resource): " + location.toString()); }
+ Document doc = resource.getInfoDocument();
+ if(doc == null){ throw new SourceNotFoundException("Source not found (no Document): " + location.toString()); }
+ source = new StringSource(manager, doc);
+ if(source == null){ throw new SourceNotFoundException("Source not found (no Source): " + location.toString()); }
+ return source;
+ }
+ // Revision
+ String revision = location.getRevision();
+ if(0 == revision.length()){
+ revision = Content.REVISION_DEFAULT;
+ }
+ if(REQUEST_META == requestType){
+ source = resolver.resolveURI(design.getDesign(filename, revision).getMetaURI());
+ // source = resolver.resolveURI(design.getResource(unid, revision).getMetaURI());
+ if(source.exists()){
+ return source;
+ }else{
+ throw new SourceNotFoundException("Source not found (no Meta Source): " + location.toString());
+ }
+ }
+ String curi = design.getDesign(filename, revision).getURI();
+ // System.out.println("ContentSourceFactory.getSource UNID=" + unid + " LANG=" + language + " REV=" + revision + " CURI=" + curi);
+ if(curi.length() < 1){ throw new SourceNotFoundException("Source not found (no URI): " + location.toString() + " UNID=" + filename + " REV=" + revision); }
+ source = resolver.resolveURI(curi);
+ if(source.exists()){ return source; }
+ throw new SourceNotFoundException("Source not found: " + location.toString() + " (" + curi + ")");
+ }
+}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Location.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Location.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Location.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Location.java Tue Sep 9 17:30:20 2008
@@ -76,4 +76,10 @@
public String getExtension() {
return extension;
}
+ void setUnid(String unid) {
+ this.unid = unid;
+ }
+ public String toString() {
+ return unid + (0 < extension.length() ? "." + extension : "") + (0 < language.length() ? "_" + language : "") + (0 < revision.length() ? "!" + revision : "");
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Resource.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Resource.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Resource.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/Resource.java Tue Sep 9 17:30:20 2008
@@ -13,9 +13,7 @@
public String getID();
public String getType();
/**
- * Used by Lenya-1.2 Publications.
- *
- * @deprecated Use getType()
+ * getDocumentType() is used by Lenya-1.2 Publications. Deprecate in post-1.3 version.
*/
public String getDocumentType();
public String getLanguage();
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ResourceTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ResourceTransformer.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ResourceTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/ResourceTransformer.java Tue Sep 9 17:30:20 2008
@@ -1,10 +1,16 @@
package org.apache.lenya.cms.content;
+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;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.AbstractDOMTransformer;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.Publication;
+import org.xml.sax.SAXException;
/**
* This transformer modifies the structural information of a Resource. It accepts a UNID as the src parameter. It can: - change the id and defaultlanguage of the Resource, - delete Translations and Revisions, - change the live and edit Revisions of Translations. <resource [id="newid"] [defaultlanguage="aa"]> <translation language="xx" [action="delete"] [live="1137958604000"] [edit="1137958604000"]> <revision revision="1137958604000" [action="delete"]/> </translation> </resource> action="delete" has top priority. Any settings not included will not be affected.
*
@@ -12,22 +18,36 @@
* @since 1.3
*/
public class ResourceTransformer extends AbstractDOMTransformer {
+ public static final String TYPE_CONTENT = "content";
+ public static final String TYPE_DESIGN = "design";
+ public static final String TYPE_STRUCTURE = "structure";
+ private String type = TYPE_CONTENT;
+ public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) throws ProcessingException, SAXException, IOException {
+ super.setup(resolver, objectModel, src, par);
+ type = parameters.getParameter("type", type);
+ }
protected org.w3c.dom.Document transform(org.w3c.dom.Document doc) {
System.out.println("ResourceTransformer - BEGIN");
String unid = this.source;
Request request = ObjectModelHelper.getRequest(super.objectModel);
- return transformDocument(request, unid, doc);
+ return transformDocument(request, unid, doc, type);
}
- static public org.w3c.dom.Document transformDocument(Request request, String unid, org.w3c.dom.Document doc) {
+ static public org.w3c.dom.Document transformDocument(Request request, String unid, org.w3c.dom.Document doc, String type) {
PageEnvelope envelope;
try{
envelope = PageEnvelope.getCurrent();
}catch(PageEnvelopeException e){
return null;
}
- Publication pub = envelope.getPublication();
- Content content = pub.getContent();
- Resource resource = content.getResource(unid);
+ Publication publication = envelope.getPublication();
+ Resource resource;
+ if(TYPE_DESIGN.equalsIgnoreCase(type)){
+ resource = publication.getDesign().getDesign(unid);
+ }else if(TYPE_STRUCTURE.equalsIgnoreCase(type)){
+ resource = publication.getDesign().getStructure(unid);
+ }else{ // TYPE_CONTENT
+ resource = publication.getContent().getResource(unid);
+ }
resource.update(doc);
return doc;
}
Added: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/StructureSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/StructureSourceFactory.java?rev=693670&view=auto
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/StructureSourceFactory.java (added)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/StructureSourceFactory.java Tue Sep 9 17:30:20 2008
@@ -0,0 +1,90 @@
+package org.apache.lenya.cms.content;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.StringTokenizer;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.lenya.cms.cocoon.components.source.impl.StringSource;
+import org.apache.lenya.cms.content.flat.FlatDesign;
+import org.w3c.dom.Document;
+/**
+ * Implements content: protocol. <BR>
+ * This should call the Content API that calls a Content Impl. <BR>
+ * <BR>== Content API == <BR>
+ * Source getResourceByUNID(String unid, String translation, String revision) <BR>
+ * Source getResourceByID(String structure, String id, String translation, String revision) <BR>
+ * <BR>== Content Impls == <BR>
+ * ContentHierarchical (Lenya 1.2) <BR>
+ * ContentFlat (Lenya 1.3)
+ *
+ * @author solprovider
+ * @since 1.3
+ */
+public class StructureSourceFactory extends AbstractContentSourceFactory {
+ Source getResource(int requestType, Location location) throws MalformedURLException, IOException {
+ System.out.println("StructureSourceFactory.getResource l=" + location.toString());
+ /** ******** Get Source (uses Content) ************ */
+ StringTokenizer tokens = new StringTokenizer(location.getUnid(), "/", true);
+ String token = tokens.nextToken();
+ // Remove leading slashes
+ while(token.equals("/") && tokens.hasMoreTokens()){
+ token = tokens.nextToken();
+ }
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(token);
+ while(tokens.hasMoreTokens()){
+ buffer.append(tokens.nextToken());
+ }
+ String structure = buffer.toString();
+ System.out.println("StructureSourceFactory.getResource s=" + structure);
+ Source source;
+ FlatDesign design = super.publication.getDesign();
+ if(REQUEST_INFO == requestType){
+ Resource resource = design.getStructure(structure);
+ if(resource == null){
+ System.out.println("StructureSourceFactory.getResource MISSING INFO Resource=null");
+ throw new SourceNotFoundException("Source not found (no Resource): " + location.toString());
+ }
+ Document doc = resource.getInfoDocument();
+ if(doc == null){
+ System.out.println("StructureSourceFactory.getResource MISSING INFO doc=null");
+ throw new SourceNotFoundException("Source not found (no Document): " + location.toString());
+ }
+ source = new StringSource(manager, doc);
+ if(source == null){
+ System.out.println("StructureSourceFactory.getResource MISSING INFO source=null");
+ throw new SourceNotFoundException("Source not found (no Source): " + location.toString());
+ }
+ System.out.println("StructureSourceFactory.getResource FOUND INFO " + location.toString());
+ return source;
+ }
+ // Revision
+ String revision = location.getRevision();
+ if(0 == revision.length()){
+ revision = Content.REVISION_DEFAULT;
+ }
+ if(REQUEST_META == requestType){
+ source = resolver.resolveURI(design.getStructure(structure, revision).getMetaURI());
+ if(source.exists()){
+ System.out.println("StructureSourceFactory.getResource FOUND META " + location.toString());
+ return source;
+ }else{
+ System.out.println("StructureSourceFactory.getResource MISSING INFO " + location.toString());
+ throw new SourceNotFoundException("Source not found (no Meta Source): " + location.toString());
+ }
+ }
+ String curi = design.getStructure(structure, revision).getURI();
+ System.out.println("StructureSourceFactory.getResource REV=" + revision + " CURI='" + curi + "'");
+ if(curi.length() < 1){
+ System.out.println("StructureSourceFactory.getResource: No URI " + location.toString());
+ throw new SourceNotFoundException("Source not found (no URI): " + location.toString() + " UNID=" + structure + " REV=" + revision);
+ }
+ source = resolver.resolveURI(curi);
+ if(source.exists()){
+ System.out.println("StructureSourceFactory.getResource FOUND " + location.toString());
+ return source;
+ }
+ System.out.println("StructureSourceFactory.getResource MISSING " + location.toString());
+ throw new SourceNotFoundException("Source not found: " + location.toString() + " (" + curi + ")");
+ }
+}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/CreateResourceTransformer.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/CreateResourceTransformer.java?rev=693670&r1=693669&r2=693670&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/CreateResourceTransformer.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/content/flat/CreateResourceTransformer.java Tue Sep 9 17:30:20 2008
@@ -1,11 +1,15 @@
package org.apache.lenya.cms.content.flat;
+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.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.transformation.AbstractDOMTransformer;
import org.apache.lenya.cms.content.ResourceException;
+import org.apache.lenya.cms.content.ResourceTransformer;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
/**
* @cocoon.sitemap.component.documentation This transformer creates a new Resource.
*
@@ -14,27 +18,29 @@
*/
// <?xml version="1.0" encoding="UTF-8"?>
// <resource defaultlanguage="en" doctype="xhtml" id="doctypes" type="xml" unid="0002" xmlns=""/>
-public class CreateResourceTransformer extends AbstractDOMTransformer {
- public static final String CONTENT_PREFIX = "content";
- public static final String FILE_NAME_REGEXP = "[-a-zA-Z0-9_. ]+";
- protected org.w3c.dom.Document transform(org.w3c.dom.Document doc) {
- Request request = ObjectModelHelper.getRequest(super.objectModel);
- createResource(request, doc);
- return doc;
+public class CreateResourceTransformer extends AbstractDOMTransformer implements Configurable {
+ private String type = ResourceTransformer.TYPE_CONTENT;
+ public void configure(Configuration conf) throws ConfigurationException {
+ Configuration child = conf.getChild("type");
+ type = child.getValue(type);
}
- static public org.w3c.dom.Document transformDocument(Request request, org.w3c.dom.Document doc) throws ProcessingException {
- createResource(request, doc);
+ protected org.w3c.dom.Document transform(org.w3c.dom.Document doc) {
+ createResource(doc, type);
return doc;
}
/**
- * @param request
- * The request
- * @param doc
- * The data to be inserted.
- * @throws ProcessingException
- * @throws ResourceException
+ * @deprecated Request is not needed. Must update JS files in Modules before deleting.
*/
- static private void createResource(Request request, org.w3c.dom.Document doc) {
+ static public org.w3c.dom.Document transformDocument(Request request, org.w3c.dom.Document doc, String type) throws ProcessingException {
+ createResource(doc, type);
+ return doc;
+ }
+ static public org.w3c.dom.Document transformDocument(org.w3c.dom.Document doc, String type) throws ProcessingException {
+ createResource(doc, type);
+ return doc;
+ }
+ static private void createResource(org.w3c.dom.Document doc, String resourceType) {
+ // System.out.println("CreateResourceTransformer.createResource Type=" + resourceType);
if(doc == null){
System.out.println("CreateResource: Document is required.");
// throw new ProcessingException("CreateResource: document is required.");
@@ -50,18 +56,21 @@
String id = element.getAttribute("id");
FlatResource resource;
try{
- resource = FlatResource.create(unid, type, id);
+ if(ResourceTransformer.TYPE_STRUCTURE.equalsIgnoreCase(resourceType)){
+ System.out.println("CreateResourceTransformer.createResource calling createStructure");
+ resource = FlatResource.createStructure(unid, type, id);
+ }else if(ResourceTransformer.TYPE_DESIGN.equalsIgnoreCase(resourceType)){
+ resource = FlatResource.createDesign(unid, type, id);
+ }else{
+ resource = FlatResource.createContent(unid, type, id);
+ }
unid = resource.getUNID();
- // Attempts to make UNID accessible to XMAP.
- // request.setAttribute("unid", unid);
- // Globals.getRequest().setAttribute("unid", unid);
- // ContextMap contextMap = ContextMap.getCurrentContext();
- // contextMap.set("unid", unid);
element.setAttribute("unid", unid);
element.setAttribute("status", "SUCCESS");
}catch(ResourceException e){
element.setAttribute("status", "FAILURE");
- element.setNodeValue(e.getLocalizedMessage());
+ Text text = doc.createTextNode(e.getMessage());
+ element.appendChild(text);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org