You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/03/31 09:27:18 UTC
svn commit: r159567 [2/2] - in lenya/trunk/src: java/org/apache/lenya/
java/org/apache/lenya/cms/ac/ java/org/apache/lenya/cms/ac/cocoon/
java/org/apache/lenya/cms/ac/workflow/ java/org/apache/lenya/cms/ant/
java/org/apache/lenya/cms/cocoon/acting/
java/org/apache/lenya/cms/cocoon/components/modules/input/
java/org/apache/lenya/cms/cocoon/flow/
java/org/apache/lenya/cms/cocoon/generation/
java/org/apache/lenya/cms/cocoon/scheduler/
java/org/apache/lenya/cms/cocoon/source/
java/org/apache/lenya/cms/cocoon/transformation/
java/org/apache/lenya/cms/metadata/dublincore/
java/org/apache/lenya/cms/publication/
java/org/apache/lenya/cms/publication/task/
java/org/apache/lenya/cms/publication/util/
java/org/apache/lenya/cms/scheduler/ java/org/apache/lenya/cms/site/
java/org/apache/lenya/cms/site/topicmap/
java/org/apache/lenya/cms/site/usecases/ java/org/apache/lenya/cms/task/
java/org/apache/lenya/cms/usecase/ webapp/WEB-INF/ webapp/lenya/pubs/blog/
webapp/lenya/pubs/default/config/
webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationImpl.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationImpl.java Wed Mar 30 23:27:09 2005
@@ -28,11 +28,7 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
-import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.tree.TreeSiteManager;
/**
* A publication.
@@ -69,8 +65,8 @@
private static final String ATTRIBUTE_ID = "id";
private static final String ELEMENT_PATH_MAPPER = "path-mapper";
private static final String ELEMENT_DOCUMENT_BUILDER = "document-builder";
- private static final String ELEMENT_SITE_STRUCTURE = "site-structure";
- private static final String ATTRIBUTE_TYPE = "type";
+ private static final String ELEMENT_SITE_MANAGER = "site-manager";
+ private static final String ATTRIBUTE_NAME = "name";
private static final String ATTRIBUTE_SUPPORTS_TEMPLATING = "supports-templating";
private static final String LANGUAGES = "languages";
private static final String DEFAULT_LANGUAGE_ATTR = "default";
@@ -117,7 +113,6 @@
Configuration config;
String pathMapperClassName = null;
- String documentBuilderClassName = null;
try {
config = builder.buildFromFile(configFile);
@@ -131,17 +126,11 @@
+ pathMapperClassName + "]", e);
}
- try {
- Configuration documentBuilderConfiguration = config
- .getChild(ELEMENT_DOCUMENT_BUILDER, false);
- if (documentBuilderConfiguration != null) {
- documentBuilderClassName = documentBuilderConfiguration.getValue();
- Class documentBuilderClass = Class.forName(documentBuilderClassName);
- this.documentBuilder = (DocumentBuilder) documentBuilderClass.newInstance();
- }
- } catch (final ClassNotFoundException e) {
- throw new PublicationException("Cannot instantiate document builder: ["
- + pathMapperClassName + "]", e);
+ Configuration documentBuilderConfiguration = config.getChild(ELEMENT_DOCUMENT_BUILDER,
+ false);
+ if (documentBuilderConfiguration != null) {
+ this.documentBuilderHint = documentBuilderConfiguration
+ .getAttribute(ATTRIBUTE_NAME);
}
Configuration[] _languages = config.getChild(LANGUAGES).getChildren();
@@ -154,14 +143,10 @@
}
}
- String _siteManagerClass = TreeSiteManager.class.getName();
- Configuration siteStructureConfiguration = config.getChild(ELEMENT_SITE_STRUCTURE,
- false);
- if (siteStructureConfiguration != null) {
- _siteManagerClass = siteStructureConfiguration.getAttribute(ATTRIBUTE_TYPE);
+ Configuration siteManagerConfiguration = config.getChild(ELEMENT_SITE_MANAGER, false);
+ if (siteManagerConfiguration != null) {
+ this.siteManagerName = siteManagerConfiguration.getAttribute(ATTRIBUTE_NAME);
}
- Class klass = Class.forName(_siteManagerClass);
- this.siteManagerClass = klass;
Configuration[] proxyConfigs = config.getChildren(ELEMENT_PROXY);
for (int i = 0; i < proxyConfigs.length; i++) {
@@ -315,36 +300,15 @@
return this.breadcrumbprefix;
}
- private DocumentBuilder documentBuilder;
+ private String documentBuilderHint;
/**
* Returns the document builder of this instance.
* @return A document builder.
*/
- public DocumentBuilder getDocumentBuilder() {
+ public String getDocumentBuilderHint() {
loadConfiguration();
- if (this.documentBuilder == null) {
- throw new IllegalStateException(
- "The document builder was not defined in publication.xconf!");
- }
- ContainerUtil.enableLogging(this.documentBuilder, getLogger());
- return this.documentBuilder;
- }
-
- /**
- * Creates a version of the document object in another area.
- * @param document The document to clone.
- * @param area The destination area.
- * @return A document.
- * @throws PublicationException when an error occurs.
- */
- public Document getAreaVersion(Document document, String area) throws PublicationException {
- DocumentBuilder builder = getDocumentBuilder();
- String url = builder
- .buildCanonicalUrl(this, area, document.getId(), document.getLanguage());
- Document destinationDocument = builder.buildDocument(document.getIdentityMap(), document
- .getPublication(), url);
- return destinationDocument;
+ return this.documentBuilderHint;
}
/**
@@ -400,22 +364,7 @@
return proxy;
}
- private Class siteManagerClass;
-
- /**
- * @see org.apache.lenya.cms.publication.Publication#getSiteManager()
- */
- public SiteManager getSiteManager() throws SiteException {
- loadConfiguration();
- SiteManager manager;
- try {
- manager = (SiteManager) this.siteManagerClass.newInstance();
- ContainerUtil.enableLogging(manager, getLogger());
- } catch (Exception e) {
- throw new SiteException(e);
- }
- return manager;
- }
+ private String siteManagerName;
/**
* @see org.apache.lenya.cms.publication.Publication#exists()
@@ -443,5 +392,13 @@
public boolean supportsTemplating() {
loadConfiguration();
return this.supportsTemplating;
+ }
+
+ /**
+ * @see org.apache.lenya.cms.publication.Publication#getSiteManagerHint()
+ */
+ public String getSiteManagerHint() {
+ loadConfiguration();
+ return this.siteManagerName;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java Wed Mar 30 23:27:09 2005
@@ -28,15 +28,12 @@
import org.apache.avalon.excalibur.io.FileUtil;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.service.ServiceException;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationFactory;
import org.apache.lenya.cms.publication.ResourcesManager;
-import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.cms.site.tree.TreeSiteManager;
import org.apache.lenya.cms.task.AbstractTask;
import org.apache.lenya.cms.task.ExecutionException;
import org.apache.lenya.cms.task.Task;
@@ -81,7 +78,7 @@
*/
protected DocumentIdentityMap getIdentityMap() throws ExecutionException {
if (this.map == null) {
- this.map = new DocumentIdentityMap();
+ this.map = new DocumentIdentityMap(getServiceManager());
}
return this.map;
}
@@ -236,20 +233,17 @@
return roles;
}
- protected SiteTree getSiteTree(String area) {
- SiteTree tree;
+ /**
+ * @param area The area.
+ * @return A site tree.
+ * @deprecated Use generic site manager methods instead.
+ */
+ protected SiteTree getSiteTree1(String area) {
try {
- SiteManager manager = getPublication().getSiteManager();
- if (!(manager instanceof TreeSiteManager)) {
- throw new RuntimeException("Only supported for site trees.");
- }
- tree = ((TreeSiteManager) manager).getTree(getIdentityMap(), getPublication(), area);
- } catch (RuntimeException e) {
- throw e;
- } catch (Exception e) {
+ return (SiteTree) getIdentityMap().getSiteStructure(getPublication(), area);
+ } catch (ExecutionException e) {
throw new RuntimeException(e);
}
- return tree;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/util/CollectionImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/util/CollectionImpl.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/util/CollectionImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/util/CollectionImpl.java Wed Mar 30 23:27:09 2005
@@ -26,6 +26,7 @@
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.lenya.cms.publication.DefaultDocument;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentBuildException;
@@ -48,19 +49,21 @@
/**
* Ctor.
+ * @param manager The service manager.
* @param map A document identity map.
* @param publication The publication.
* @param id The document ID.
* @param area The area the document belongs to.
* @throws DocumentException when something went wrong.
*/
- public CollectionImpl(DocumentIdentityMap map, Publication publication, String id, String area)
- throws DocumentException {
- super(map, publication, id, area);
+ public CollectionImpl(ServiceManager manager, DocumentIdentityMap map, Publication publication,
+ String id, String area) throws DocumentException {
+ super(manager, map, publication, id, area);
}
/**
* Ctor.
+ * @param manager The service manager.
* @param map A document identity map.
* @param publication The publication.
* @param id The document ID.
@@ -68,16 +71,15 @@
* @param language The language of the document.
* @throws DocumentException when something went wrong.
*/
- public CollectionImpl(DocumentIdentityMap map, Publication publication, String id, String area,
- String language) throws DocumentException {
- super(map, publication, id, area, language);
+ public CollectionImpl(ServiceManager manager, DocumentIdentityMap map, Publication publication,
+ String id, String area, String language) throws DocumentException {
+ super(manager, map, publication, id, area, language);
}
private List documentsList = new ArrayList();
/**
- * Returns the list that holds the documents. Use this method to invoke lazy
- * loading.
+ * Returns the list that holds the documents. Use this method to invoke lazy loading.
* @return A list.
* @throws DocumentException when something went wrong.
*/
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java Wed Mar 30 23:27:09 2005
@@ -24,6 +24,7 @@
import java.util.Map;
import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
@@ -51,10 +52,10 @@
/**
* Ctor.
- *
+ * @param manager The service manager.
* @param _objectModel The Cocoon object model.
*/
- public DocumentHelper(Map _objectModel) {
+ public DocumentHelper(ServiceManager manager, Map _objectModel) {
this.objectModel = _objectModel;
try {
PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
@@ -62,7 +63,7 @@
} catch (PublicationException e) {
throw new RuntimeException(e);
}
- this.identityMap = new DocumentIdentityMap();
+ this.identityMap = new DocumentIdentityMap(manager);
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentSet.java Wed Mar 30 23:27:09 2005
@@ -20,13 +20,14 @@
package org.apache.lenya.cms.publication.util;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.PublicationException;
/**
- * A set of documents.
+ * An ordered set of documents without duplicates.
*/
public class DocumentSet {
@@ -105,6 +106,20 @@
assert resource != null;
assert getList().contains(resource);
getList().remove(resource);
+ }
+
+ /**
+ * Removes all documents.
+ */
+ public void clear() {
+ getList().clear();
+ }
+
+ /**
+ * Reverses the document order.
+ */
+ public void reverse() {
+ Collections.reverse(getList());
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/util/XlinkCollection.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/util/XlinkCollection.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/util/XlinkCollection.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/util/XlinkCollection.java Wed Mar 30 23:27:09 2005
@@ -21,6 +21,7 @@
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.avalon.framework.service.ServiceManager;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
@@ -38,19 +39,21 @@
/**
* Ctor.
+ * @param manager The service manager.
* @param map A document identity map.
* @param publication The publication.
* @param id The document ID.
* @param area The area the document belongs to.
* @throws DocumentException when something went wrong.
*/
- public XlinkCollection(DocumentIdentityMap map, Publication publication, String id, String area)
- throws DocumentException {
- super(map, publication, id, area);
+ public XlinkCollection(ServiceManager manager, DocumentIdentityMap map,
+ Publication publication, String id, String area) throws DocumentException {
+ super(manager, map, publication, id, area);
}
/**
* Ctor.
+ * @param manager The service manager.
* @param map A document identity map.
* @param publication The publication.
* @param id The document ID.
@@ -58,9 +61,10 @@
* @param language The language of the document.
* @throws DocumentException when something went wrong.
*/
- public XlinkCollection(DocumentIdentityMap map, Publication publication, String id,
- String area, String language) throws DocumentException {
- super(map, publication, id, area, language);
+ public XlinkCollection(ServiceManager manager, DocumentIdentityMap map,
+ Publication publication, String id, String area, String language)
+ throws DocumentException {
+ super(manager, map, publication, id, area, language);
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java Wed Mar 30 23:27:09 2005
@@ -274,7 +274,7 @@
getServletContextDirectory().getAbsolutePath());
String documentUrl = (String) schedulerParameters.get(PARAMETER_DOCUMENT_URL);
- DocumentIdentityMap map = new DocumentIdentityMap();
+ DocumentIdentityMap map = new DocumentIdentityMap(null);
org.apache.lenya.cms.publication.Document document = map.getFactory()
.getFromURL(publication, documentUrl);
deleteDocumentJobs(document);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java Wed Mar 30 23:27:09 2005
@@ -17,14 +17,20 @@
package org.apache.lenya.cms.site;
+import java.util.Arrays;
+import java.util.Comparator;
+
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.util.DocumentSet;
/**
* Abstract base class for site managers.
*
* @version $Id$
*/
-public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager {
+public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager,
+ Comparator {
/**
* Ctor.
@@ -32,4 +38,117 @@
public AbstractSiteManager() {
}
+ /**
+ * @see org.apache.lenya.cms.site.SiteManager#sortAscending(org.apache.lenya.cms.publication.util.DocumentSet)
+ */
+ public void sortAscending(DocumentSet set) throws SiteException {
+ if (!set.isEmpty()) {
+
+ if (!check(set)) {
+ throw new SiteException("The dependence relation is not a strict partial order!");
+ }
+
+ Document[] documents = set.getDocuments();
+ Arrays.sort(documents, this);
+ set.clear();
+ for (int i = 0; i < documents.length; i++) {
+ set.add(documents[i]);
+ }
+ }
+ }
+
+ /**
+ * Checks if the dependence relation is a strict partial order.
+ * @param set The document set to check.
+ * @return A boolean value.
+ * @throws SiteException when something went wrong.
+ */
+ protected boolean check(DocumentSet set) throws SiteException {
+ boolean isStrictPartialOrder = isIrreflexive(set) && isAntisymmetric(set)
+ && isTransitive(set);
+ return isStrictPartialOrder;
+ }
+
+ /**
+ * Checks if the dependence relation is antisymmetric.
+ * @param set The document set to check.
+ * @return A boolean value.
+ * @throws SiteException when something went wrong.
+ */
+ protected boolean isAntisymmetric(DocumentSet set) throws SiteException {
+ Document[] resources = set.getDocuments();
+ boolean isAntisymmetric = true;
+ for (int i = 0; i < resources.length; i++) {
+ for (int j = i + 1; j < resources.length; j++) {
+ if (requires(resources[i], resources[j]) && requires(resources[j], resources[i])
+ && !(resources[i] == resources[j])) {
+ isAntisymmetric = false;
+ }
+ }
+ }
+ return isAntisymmetric;
+ }
+
+ /**
+ * Checks if the dependence relation is transitive.
+ * @param set The document set to check.
+ * @return A boolean value.
+ * @throws SiteException when something went wrong.
+ */
+ protected boolean isTransitive(DocumentSet set) throws SiteException {
+ Document[] resources = set.getDocuments();
+ boolean isTransitive = true;
+ for (int i = 0; i < resources.length; i++) {
+ for (int j = i + 1; j < resources.length; j++) {
+ for (int k = j + 1; k < resources.length; k++) {
+ if (requires(resources[i], resources[j])
+ && requires(resources[j], resources[k])
+ && !requires(resources[i], resources[k])) {
+ isTransitive = false;
+ }
+ }
+ }
+ }
+ return isTransitive;
+ }
+
+ /**
+ * Checks if the dependence relation is irreflexive.
+ * @param set The document set.
+ * @return A boolean value
+ * @throws SiteException
+ */
+ protected boolean isIrreflexive(DocumentSet set) throws SiteException {
+ Document[] resources = set.getDocuments();
+ boolean isIrreflexive = true;
+ for (int i = 0; i < resources.length; i++) {
+ if (requires(resources[i], resources[i])) {
+ isIrreflexive = false;
+ }
+ }
+ return isIrreflexive;
+ }
+
+ /**
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ */
+ public int compare(Object arg0, Object arg1) {
+ int result = 0;
+ if (arg0 instanceof Document && arg1 instanceof Document) {
+ Document doc1 = (Document) arg0;
+ Document doc2 = (Document) arg1;
+
+ try {
+ if (requires(doc1, doc2)) {
+ result = 1;
+ }
+ if (requires(doc2, doc1)) {
+ result = -1;
+ }
+ } catch (SiteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return result;
+ }
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java Wed Mar 30 23:27:09 2005
@@ -20,6 +20,7 @@
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.util.DocumentSet;
/**
* <p>
@@ -45,7 +46,7 @@
/**
* The Avalon role.
*/
- String ROLE = SiteManager.ROLE;
+ String ROLE = SiteManager.class.getName();
/**
* Checks if a resource requires another one.
@@ -138,5 +139,12 @@
*/
Document[] getDocuments(DocumentIdentityMap identityMap, Publication publication, String area)
throws SiteException;
-
+
+ /**
+ * Sorts a set of documents using the "requires" relation.
+ * @param set The set.
+ * @throws SiteException if an error occurs.
+ */
+ void sortAscending(DocumentSet set) throws SiteException;
+
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java Wed Mar 30 23:27:09 2005
@@ -19,13 +19,13 @@
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.site.AbstractSiteManager;
import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.cms.site.SiteManager;
/**
* Site manager to support topic maps.
*/
-public class TopicMapSiteManager implements SiteManager {
+public class TopicMapSiteManager extends AbstractSiteManager {
/**
* @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.Document,
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/ChangeLabel.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/ChangeLabel.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/ChangeLabel.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/ChangeLabel.java Wed Mar 30 23:27:09 2005
@@ -16,6 +16,7 @@
*/
package org.apache.lenya.cms.site.usecases;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.site.SiteManager;
@@ -53,14 +54,27 @@
protected void initParameters() {
super.initParameters();
Document document = getSourceDocument();
+
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
+
if (document != null && document.exists()) {
setParameter(DOCUMENT_ID, document.getId());
- SiteManager _manager = document.getPublication().getSiteManager();
- setParameter(LABEL, _manager.getLabel(document));
+ setParameter(LABEL, siteManager.getLabel(document));
}
} catch (Exception e) {
throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
}
}
@@ -71,9 +85,25 @@
super.doExecute();
Document document = getSourceDocument();
- SiteManager _manager = document.getPublication().getSiteManager();
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
+
+ String label = getParameterAsString(LABEL);
+ siteManager.setLabel(document, label);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
- String label = getParameterAsString(LABEL);
- _manager.setLabel(document, label);
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java Wed Mar 30 23:27:09 2005
@@ -20,6 +20,7 @@
import java.util.GregorianCalendar;
import java.util.Map;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
@@ -85,21 +86,29 @@
super.doExecute();
Document document = createDocument();
- Publication publication = document.getPublication();
DocumentManager documentManager = null;
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
try {
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
documentManager.add(document);
- }
- finally {
+
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
+ siteManager.setLabel(document, getParameterAsString(DublinCore.ELEMENT_TITLE));
+ } finally {
if (documentManager != null) {
this.manager.release(documentManager);
}
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
}
- SiteManager _manager = publication.getSiteManager();
- _manager.setLabel(document, getParameterAsString(DublinCore.ELEMENT_TITLE));
-
setMetaData(document);
setTargetURL(document.getCanonicalWebappURL());
}
@@ -161,8 +170,8 @@
}
/**
- * @return The source document or <code>null</code> if the usecase was not
- * invoked on a document.
+ * @return The source document or <code>null</code> if the usecase was not invoked on a
+ * document.
*/
protected Document getSourceDocument() {
Document document = null;
@@ -199,4 +208,4 @@
}
return this.publication;
}
-}
+}
\ No newline at end of file
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Delete.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Delete.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Delete.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Delete.java Wed Mar 30 23:27:09 2005
@@ -16,12 +16,12 @@
*/
package org.apache.lenya.cms.site.usecases;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.publication.util.UniqueDocumentId;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.usecase.DocumentUsecase;
@@ -48,8 +48,24 @@
Document document = getSourceDocument();
DocumentIdentityMap identityMap = getUnitOfWork().getIdentityMap();
- SiteManager manager = document.getPublication().getSiteManager();
- DocumentSet set = new DocumentSet(manager.getRequiringResources(document));
+
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ DocumentSet set;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
+ set = new DocumentSet(siteManager.getRequiringResources(document));
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
+
set.add(document);
Document[] documents = set.getDocuments();
for (int i = 0; i < documents.length; i++) {
@@ -70,17 +86,12 @@
Document source = getSourceDocument();
DocumentIdentityMap identityMap = source.getIdentityMap();
- String desiredId = "/" + source.getName();
- UniqueDocumentId helper = new UniqueDocumentId();
- String availableId = helper.computeUniqueDocumentId(source.getPublication(),
- Publication.TRASH_AREA,
- desiredId);
- Document target = identityMap.getFactory().get(source.getPublication(),
- Publication.TRASH_AREA,
- availableId);
DocumentManager documentManager = null;
+ Document target;
try {
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
+ target = identityMap.getFactory().getAreaVersion(source, Publication.TRASH_AREA);
+ target = documentManager.getAvailableDocument(target);
documentManager.moveAll(source, target);
} finally {
if (documentManager != null) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/EmptyTrash.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/EmptyTrash.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/EmptyTrash.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/EmptyTrash.java Wed Mar 30 23:27:09 2005
@@ -18,6 +18,8 @@
import java.util.Arrays;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.DocumentManager;
@@ -81,10 +83,27 @@
protected Document[] getTrashDocuments() throws PublicationException, SiteException {
PublicationFactory factory = PublicationFactory.getInstance(getLogger());
Publication publication = factory.getPublication(this.manager, getSourceURL());
- DocumentIdentityMap identityMap = new DocumentIdentityMap();
+ DocumentIdentityMap identityMap = new DocumentIdentityMap(this.manager);
+ Document[] documents;
+
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(publication
+ .getSiteManagerHint());
+ documents = siteManager.getDocuments(identityMap, publication, Publication.TRASH_AREA);
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
- SiteManager siteManager = publication.getSiteManager();
- Document[] documents = siteManager.getDocuments(identityMap, publication, Publication.TRASH_AREA);
return documents;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java Wed Mar 30 23:27:09 2005
@@ -27,6 +27,7 @@
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.environment.ObjectModelHelper;
@@ -40,7 +41,6 @@
import org.apache.lenya.cms.publication.DocumentType;
import org.apache.lenya.cms.publication.DocumentTypeResolver;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.xml.DocumentHelper;
import org.apache.xpath.XPathAPI;
@@ -49,8 +49,7 @@
import org.w3c.dom.NodeList;
/**
- * Rewrite the links in a publication. This is used after renaming / moving a
- * document.
+ * Rewrite the links in a publication. This is used after renaming / moving a document.
*
* @version $Id:$
*/
@@ -73,13 +72,23 @@
String area = originalTargetDocument.getArea();
DocumentIdentityMap identityMap = originalTargetDocument.getIdentityMap();
- SiteManager siteManager;
Document[] documents;
+
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
try {
- siteManager = publication.getSiteManager();
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
documents = siteManager.getDocuments(identityMap, publication, area);
- } catch (SiteException e) {
+ } catch (Exception e) {
throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
}
DocumentFactory docFactory = identityMap.getFactory();
@@ -182,9 +191,8 @@
}
/**
- * Checks if targetDocument refers to originalTargetDocument, to one of its
- * language versions, to one of its descendants, or to a language version of
- * one of the descendants.
+ * Checks if targetDocument refers to originalTargetDocument, to one of its language versions,
+ * to one of its descendants, or to a language version of one of the descendants.
* @param targetDocument The target document.
* @param originalTargetDocument The original target document.
* @return A boolean value.
@@ -208,13 +216,28 @@
String targetId = targetDocument.getId();
String childString = targetId.substring(originalId.length());
- DocumentBuilder builder = targetDocument.getPublication().getDocumentBuilder();
- String newTargetUrl = builder.buildCanonicalUrl(newTargetDocument.getPublication(),
- newTargetDocument.getArea(),
- newTargetDocument.getId() + childString,
- targetDocument.getLanguage());
-
- return newTargetUrl;
+ ServiceSelector selector = null;
+ DocumentBuilder builder = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(DocumentBuilder.ROLE + "Selector");
+ builder = (DocumentBuilder) selector.select(originalTargetDocument.getPublication()
+ .getDocumentBuilderHint());
+
+ String newTargetUrl = builder.buildCanonicalUrl(newTargetDocument.getPublication(),
+ newTargetDocument.getArea(),
+ newTargetDocument.getId() + childString,
+ targetDocument.getLanguage());
+ return newTargetUrl;
+ } catch (ServiceException e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (builder != null) {
+ selector.release(builder);
+ }
+ this.manager.release(selector);
+ }
+ }
}
private ServiceManager manager;
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java Wed Mar 30 23:27:09 2005
@@ -16,6 +16,7 @@
*/
package org.apache.lenya.cms.site.usecases;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.site.tree.SiteTree;
@@ -45,30 +46,45 @@
}
Publication publication = getSourceDocument().getPublication();
- SiteManager manager = publication.getSiteManager();
- if (manager instanceof TreeSiteManager) {
- TreeSiteManager treeManager = (TreeSiteManager) manager;
- SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
- publication,
- getSourceDocument().getArea());
- SiteTreeNode node = tree.getNode(getSourceDocument().getId());
- SiteTreeNode[] siblings = null;
-
- String direction = getParameterAsString(DIRECTION);
- if (direction.equals(UP)) {
- siblings = node.getPrecedingSiblings();
- } else if (direction.equals(DOWN)) {
- siblings = node.getNextSiblings();
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
+ if (siteManager instanceof TreeSiteManager) {
+
+ TreeSiteManager treeManager = (TreeSiteManager) siteManager;
+ SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
+ publication,
+ getSourceDocument().getArea());
+ SiteTreeNode node = tree.getNode(getSourceDocument().getId());
+ SiteTreeNode[] siblings = null;
+
+ String direction = getParameterAsString(DIRECTION);
+ if (direction.equals(UP)) {
+ siblings = node.getPrecedingSiblings();
+ } else if (direction.equals(DOWN)) {
+ siblings = node.getNextSiblings();
+ } else {
+ addErrorMessage("The direction [" + direction + "] is not supported!");
+ }
+
+ if (siblings != null && siblings.length == 0) {
+ addErrorMessage("Cannot move the node in this direction.");
+ }
} else {
- addErrorMessage("The direction [" + direction + "] is not supported!");
+ addErrorMessage("This operation can only be invoked on site trees.");
}
-
- if (siblings != null && siblings.length == 0) {
- addErrorMessage("Cannot move the node in this direction.");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
}
- } else {
- addErrorMessage("This operation can only be invoked on site trees.");
}
}
@@ -79,21 +95,35 @@
super.doExecute();
Publication publication = getSourceDocument().getPublication();
- SiteManager manager = publication.getSiteManager();
- if (manager instanceof TreeSiteManager) {
-
- TreeSiteManager treeManager = (TreeSiteManager) manager;
- SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
- publication,
- getSourceDocument().getArea());
-
- String direction = getParameterAsString(DIRECTION);
- if (direction.equals(UP)) {
- tree.moveUp(getSourceDocument().getId());
- } else if (direction.equals(DOWN)) {
- tree.moveDown(getSourceDocument().getId());
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
+ if (siteManager instanceof TreeSiteManager) {
+
+ TreeSiteManager treeManager = (TreeSiteManager) siteManager;
+ SiteTree tree = treeManager.getTree(getSourceDocument().getIdentityMap(),
+ publication,
+ getSourceDocument().getArea());
+
+ String direction = getParameterAsString(DIRECTION);
+ if (direction.equals(UP)) {
+ tree.moveUp(getSourceDocument().getId());
+ } else if (direction.equals(DOWN)) {
+ tree.moveDown(getSourceDocument().getId());
+ }
+ tree.save();
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
}
- tree.save();
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/task/WorkflowInvoker.java Wed Mar 30 23:27:09 2005
@@ -192,7 +192,7 @@
log.debug("Workflow event: [" + eventName + "]");
// check for workflow instance first (task can initialize the workflow history)
try {
- DocumentIdentityMap map = new DocumentIdentityMap();
+ DocumentIdentityMap map = new DocumentIdentityMap(this.manager);
this.document = map.getFactory().getFromURL(publication, webappUrl);
} catch (DocumentBuildException e) {
throw new ExecutionException(e);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java Wed Mar 30 23:27:09 2005
@@ -17,6 +17,9 @@
package org.apache.lenya.cms.usecase;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
/**
@@ -24,7 +27,7 @@
*
* @version $Id$
*/
-public class UnitOfWorkImpl extends AbstractLogEnabled implements UnitOfWork {
+public class UnitOfWorkImpl extends AbstractLogEnabled implements UnitOfWork, Serviceable {
/**
* Ctor.
@@ -41,10 +44,18 @@
*/
public DocumentIdentityMap getIdentityMap() {
if (this.identityMap == null) {
- this.identityMap = new DocumentIdentityMap();
+ this.identityMap = new DocumentIdentityMap(this.manager);
}
return this.identityMap;
}
+ protected ServiceManager manager;
+
+ /**
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
}
Modified: lenya/trunk/src/java/org/apache/lenya/lenya.roles
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/lenya.roles?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/lenya.roles (original)
+++ lenya/trunk/src/java/org/apache/lenya/lenya.roles Wed Mar 30 23:27:09 2005
@@ -95,7 +95,7 @@
default-class="org.apache.lenya.cms.usecase.UsecaseResolverImpl"/>
<role name="org.apache.lenya.cms.publication.DocumentTypeResolver"
- shorthand="usecase-resolver"
+ shorthand="document-type-resolver"
default-class="org.apache.lenya.cms.publication.DocumentTypeResolverImpl"/>
<role name="org.apache.lenya.cms.cocoon.flow.FlowHelper"
@@ -118,9 +118,13 @@
shorthand="document-manager"
default-class="org.apache.lenya.cms.publication.DocumentManagerImpl"/>
- <role name="org.apache.lenya.cms.site.SiteManager"
- shorthand="document-manager"
- default-class="org.apache.lenya.cms.site.tree.TreeSiteManager"/>
+ <role name="org.apache.lenya.cms.site.SiteManagerSelector"
+ shorthand="site-managers"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
+
+ <role name="org.apache.lenya.cms.publication.DocumentBuilderSelector"
+ shorthand="document-builders"
+ default-class="org.apache.cocoon.components.ExtendedComponentSelector"/>
<role name="org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler"
shorthand="usecase-scheduler"
Modified: lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl (original)
+++ lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl Wed Mar 30 23:27:09 2005
@@ -415,6 +415,16 @@
class="org.apache.lenya.cms.usecase.scheduling.UsecaseCronJob"
logger="cron.usecase"/>
+ <site-managers>
+ <component-instance name="tree" logger="lenya.site"
+ class="org.apache.lenya.cms.site.tree.TreeSiteManager"/>
+ </site-managers>
+
+ <document-builders>
+ <component-instance name="default" logger="lenya.publication"
+ class="org.apache.lenya.cms.publication.DefaultDocumentBuilder"/>
+ </document-builders>
+
<!-- move scheduler to the end, datasources have to be available -->
<xsl:apply-templates select="component[@role = 'org.apache.cocoon.components.cron.JobScheduler']" mode="scheduler"/>
Modified: lenya/trunk/src/webapp/lenya/pubs/blog/sitemap.xmap
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/blog/sitemap.xmap?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/blog/sitemap.xmap (original)
+++ lenya/trunk/src/webapp/lenya/pubs/blog/sitemap.xmap Wed Mar 30 23:27:09 2005
@@ -122,7 +122,7 @@
<map:parameter name="relative2root" value="../../../../.."/>
</map:transform>
<map:select type="browser">
- <map:when test="mozilla5">
+ <map:when test="mozilla5DISABLED">
<map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{1}/entry.xml?uiml=xul"/>
<map:serialize type="xml" mime-type="application/vnd.mozilla.xul+xml"/>
</map:when>
@@ -263,7 +263,7 @@
</map:transform>
<map:select type="browser">
- <map:when test="mozilla5">
+ <map:when test="mozilla5DISABLED">
<map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{1}/feed.xml?uiml=xul"/>
<map:serialize type="xml" mime-type="application/vnd.mozilla.xul+xml"/>
</map:when>
Modified: lenya/trunk/src/webapp/lenya/pubs/default/config/publication.xconf
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/config/publication.xconf?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/config/publication.xconf (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/config/publication.xconf Wed Mar 30 23:27:09 2005
@@ -23,8 +23,9 @@
<language>de</language>
</languages>
<path-mapper>org.apache.lenya.cms.publication.DefaultDocumentIdToPathMapper</path-mapper>
- <document-builder>org.apache.lenya.cms.publication.DefaultDocumentBuilder</document-builder>
+ <document-builder name="default"/>
<breadcrumb-prefix/>
+ <site-manager name="tree"/>
<!--
For information about these settings, read
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java Wed Mar 30 23:27:09 2005
@@ -17,13 +17,14 @@
package org.apache.lenya.defaultpub.cms.usecases;
import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.publication.util.OrderedDocumentSet;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.usecase.DocumentUsecase;
import org.apache.lenya.cms.workflow.WorkflowManager;
@@ -37,8 +38,8 @@
public class Deactivate extends DocumentUsecase implements DocumentVisitor {
/**
- * Checks if the workflow event is supported and the parent of the document
- * exists in the live area.
+ * Checks if the workflow event is supported and the parent of the document exists in the live
+ * area.
*
* @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
*/
@@ -89,16 +90,15 @@
*/
protected void deactivate(Document authoringDocument) {
- Publication publication = authoringDocument.getPublication();
boolean success = false;
WorkflowManager wfManager = null;
DocumentManager documentManager = null;
try {
wfManager = (WorkflowManager) this.manager.lookup(WorkflowManager.ROLE);
- Document liveDocument = publication.getAreaVersion(authoringDocument,
- Publication.LIVE_AREA);
-
+ Document liveDocument = authoringDocument.getIdentityMap().getFactory()
+ .getAreaVersion(authoringDocument, Publication.LIVE_AREA);
+
documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
documentManager.delete(liveDocument);
@@ -129,8 +129,7 @@
}
/**
- * Deactivates a document or the subtree below a document, based on the
- * parameter SUBTREE.
+ * Deactivates a document or the subtree below a document, based on the parameter SUBTREE.
* @param document The document.
*/
protected void deactivateAll(Document document) {
@@ -140,17 +139,28 @@
getLogger().debug("Subtree deactivation: [" + isSubtreeEnabled() + "]");
}
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
- OrderedDocumentSet set = new OrderedDocumentSet();
- SiteManager manager = document.getPublication().getSiteManager();
- Document[] descendants = manager.getRequiringResources(document);
-
- set = new OrderedDocumentSet(descendants);
+ Document[] descendants = siteManager.getRequiringResources(document);
+ DocumentSet set = new DocumentSet(descendants);
set.add(document);
- set.visitDescending(this);
+ siteManager.sortAscending(set);
+ set.reverse();
+ set.visit(this);
} catch (Exception e) {
throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
}
if (getLogger().isDebugEnabled()) {
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Delete.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Delete.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Delete.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Delete.java Wed Mar 30 23:27:09 2005
@@ -16,6 +16,7 @@
*/
package org.apache.lenya.defaultpub.cms.usecases;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.site.SiteException;
@@ -47,7 +48,7 @@
}
}
}
-
+
/**
* @return The workflow event.
*/
@@ -75,16 +76,30 @@
}
/**
- * @return A document set containing all requiring resources and the source
- * document itself.
+ * @return A document set containing all requiring resources and the source document itself.
* @throws SiteException if an error occurs.
*/
protected DocumentSet getSubset() throws SiteException {
Document document = getSourceDocument();
- SiteManager manager = document.getPublication().getSiteManager();
- DocumentSet set = new DocumentSet(manager.getRequiringResources(document));
- set.add(document);
- return set;
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
+ DocumentSet set = new DocumentSet(siteManager.getRequiringResources(document));
+ set.add(document);
+ return set;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
}
}
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java?view=diff&r1=159566&r2=159567
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java Wed Mar 30 23:27:09 2005
@@ -24,13 +24,14 @@
import java.util.GregorianCalendar;
import java.util.List;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.publication.util.OrderedDocumentSet;
+import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.usecase.DocumentUsecase;
import org.apache.lenya.cms.usecase.scheduling.UsecaseScheduler;
@@ -95,18 +96,33 @@
}
Publication publication = document.getPublication();
+ DocumentFactory factory = document.getIdentityMap().getFactory();
- Document liveDocument = publication.getAreaVersion(document, Publication.LIVE_AREA);
+ Document liveDocument = factory.getAreaVersion(document, Publication.LIVE_AREA);
List missingDocuments = new ArrayList();
- SiteManager manager = publication.getSiteManager();
- Document[] requiredDocuments = manager.getRequiredResources(liveDocument);
- for (int i = 0; i < requiredDocuments.length; i++) {
- if (!manager.containsInAnyLanguage(requiredDocuments[i])) {
- Document authoringVersion = publication.getAreaVersion(requiredDocuments[i],
- Publication.AUTHORING_AREA);
- missingDocuments.add(authoringVersion);
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
+ Document[] requiredDocuments = siteManager.getRequiredResources(liveDocument);
+ for (int i = 0; i < requiredDocuments.length; i++) {
+ if (!siteManager.containsInAnyLanguage(requiredDocuments[i])) {
+ Document authoringVersion = factory.getAreaVersion(requiredDocuments[i],
+ Publication.AUTHORING_AREA);
+ missingDocuments.add(authoringVersion);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
}
}
@@ -197,17 +213,27 @@
getLogger().debug("Subtree publishing: [" + isSubtreeEnabled() + "]");
}
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(document.getPublication()
+ .getSiteManagerHint());
- OrderedDocumentSet set = new OrderedDocumentSet();
- SiteManager manager = document.getPublication().getSiteManager();
- Document[] descendants = manager.getRequiringResources(document);
-
- set = new OrderedDocumentSet(descendants);
+ Document[] descendants = siteManager.getRequiringResources(document);
+ DocumentSet set = new DocumentSet(descendants);
set.add(document);
- set.visitAscending(this);
+ siteManager.sortAscending(set);
+ set.visit(this);
} catch (Exception e) {
throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
}
if (getLogger().isDebugEnabled()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org