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/01/25 18:51:57 UTC

svn commit: r126400 - in lenya/trunk/src/java/org/apache/lenya: . cms/ac cms/ac/cocoon cms/ac/usecase cms/ac/workflow cms/ant cms/cocoon/acting cms/cocoon/components/modules/input cms/cocoon/flow cms/cocoon/scheduler cms/cocoon/source cms/cocoon/task cms/cocoon/transformation cms/publication cms/publication/task cms/publication/templating cms/publication/util cms/scheduler cms/site/tree cms/task cms/usecase cms/workflow/usecases

Author: andreas
Date: Tue Jan 25 09:51:54 2005
New Revision: 126400

URL: http://svn.apache.org/viewcvs?view=rev&rev=126400
Log:
switch to AbstractLogEnabled
Added:
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
Modified:
   lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
   lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
   lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java
   lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java
   lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java
   lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
   lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java
   lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
   lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java
   lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
   lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java
   lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java
   lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java
   lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
   lenya/trunk/src/java/org/apache/lenya/lenya.roles

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java	Tue Jan 25 09:51:54 2005
@@ -126,7 +126,8 @@
             File servletContext = SourceUtil.getFile(source);
             getLogger().debug("    Webapp URL:      [" + url + "]");
             getLogger().debug("    Serlvet context: [" + servletContext.getAbsolutePath() + "]");
-            publication = PublicationFactory.getPublication(url, servletContext);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            publication = factory.getPublication(url, servletContext);
         } catch (Exception e) {
             throw new AccessControlException(e);
         } finally {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java	Tue Jan 25 09:51:54 2005
@@ -37,30 +37,31 @@
 import org.apache.lenya.cms.publication.URLInformation;
 
 /**
- * Resolves the access controller according to the <code>ac.xconf</code> file of a publication.
+ * Resolves the access controller according to the <code>ac.xconf</code> file
+ * of a publication.
  */
-public class PublicationAccessControllerResolver
-    extends AbstractAccessControllerResolver
-    implements Initializable {
+public class PublicationAccessControllerResolver extends AbstractAccessControllerResolver implements
+        Initializable {
 
-    protected static final String CONFIGURATION_FILE =
-        "config/ac/ac.xconf".replace('/', File.separatorChar);
+    protected static final String CONFIGURATION_FILE = "config/ac/ac.xconf".replace('/',
+            File.separatorChar);
     protected static final String TYPE_ATTRIBUTE = "type";
 
     /**
-     * This implementation uses the publication ID in combination with the context path
-     * as cache key.
-     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#generateCacheKey(java.lang.String, org.apache.excalibur.source.SourceResolver)
+     * This implementation uses the publication ID in combination with the
+     * context path as cache key.
+     * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#generateCacheKey(java.lang.String,
+     *      org.apache.excalibur.source.SourceResolver)
      */
     protected Object generateCacheKey(String webappUrl, SourceResolver resolver)
-        throws AccessControlException {
-        	
+            throws AccessControlException {
+
         URLInformation info = new URLInformation(webappUrl);
 
         String publicationId = info.getPublicationId();
         if (getLogger().isDebugEnabled()) {
-			getLogger().debug(
-				"Using first URL step (might be publication ID) as cache key: [" + publicationId + "]");
+            getLogger().debug("Using first URL step (might be publication ID) as cache key: ["
+                    + publicationId + "]");
         }
 
         return super.generateCacheKey(publicationId, resolver);
@@ -70,7 +71,7 @@
      * @see org.apache.lenya.ac.impl.AbstractAccessControllerResolver#doResolveAccessController(java.lang.String)
      */
     public AccessController doResolveAccessController(String webappUrl)
-        throws AccessControlException {
+            throws AccessControlException {
         getLogger().debug("Resolving controller for URL [" + webappUrl + "]");
 
         AccessController controller = null;
@@ -84,8 +85,8 @@
     }
 
     /**
-     * Returns the publication for the webapp URL or null if the URL is not included
-     * in a publication.
+     * Returns the publication for the webapp URL or null if the URL is not
+     * included in a publication.
      * @param webappUrl The webapp URL.
      * @return A publication.
      * @throws AccessControlException when something went wrong.
@@ -99,19 +100,17 @@
 
         if (url.length() > 0) {
 
-			URLInformation info = new URLInformation(webappUrl);
+            URLInformation info = new URLInformation(webappUrl);
             String publicationId = info.getPublicationId();
 
             File contextDir = getContext();
-            if (PublicationFactory
-                .existsPublication(publicationId, contextDir.getAbsolutePath())) {
+            if (PublicationFactory.existsPublication(publicationId, contextDir.getAbsolutePath())) {
 
                 getLogger().debug("Publication [" + publicationId + "] exists.");
                 try {
-                    publication =
-                        PublicationFactory.getPublication(
-                            publicationId,
-                            contextDir.getAbsolutePath());
+                    PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                    publication = factory.getPublication(publicationId, contextDir
+                            .getAbsolutePath());
                 } catch (PublicationException e) {
                     throw new AccessControlException(e);
                 }
@@ -124,12 +123,12 @@
     }
 
     /**
-     * Returns the servlet context. 
+     * Returns the servlet context.
      * @return A file.
      * @throws AccessControlException when something went wrong.
      */
     protected File getContext() throws AccessControlException {
-        return context;
+        return this.context;
     }
 
     private File context;
@@ -142,7 +141,7 @@
      * @throws AccessControlException when something went wrong.
      */
     public AccessController resolveAccessController(Publication publication, String url)
-        throws AccessControlException {
+            throws AccessControlException {
 
         assert publication != null;
 
@@ -151,12 +150,12 @@
 
         if (configurationFile.isFile()) {
             try {
-                Configuration configuration =
-                    new DefaultConfigurationBuilder().buildFromFile(configurationFile);
+                Configuration configuration = new DefaultConfigurationBuilder()
+                        .buildFromFile(configurationFile);
                 String type = configuration.getAttribute(TYPE_ATTRIBUTE);
 
-                accessController =
-                    (AccessController) getManager().lookup(AccessController.ROLE + "/" + type);
+                accessController = (AccessController) getManager().lookup(AccessController.ROLE
+                        + "/" + type);
 
                 if (accessController instanceof Configurable) {
                     ((Configurable) accessController).configure(configuration);
@@ -181,11 +180,11 @@
             resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
             contextSource = resolver.resolveURI("context:///");
             contextDir = SourceUtil.getFile(contextSource);
-            
+
             if (contextDir == null || !contextDir.isDirectory()) {
                 throw new AccessControlException("The servlet context is not a directory!");
             }
-            
+
         } finally {
             if (resolver != null) {
                 if (contextSource != null) {
@@ -197,4 +196,4 @@
         this.context = contextDir;
     }
 
-}
+}
\ No newline at end of file

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/cocoon/PolicyHelper.java	Tue Jan 25 09:51:54 2005
@@ -74,7 +74,7 @@
      * @return A logger.
      */
     protected Logger getLogger() {
-        return logger;
+        return this.logger;
     }
 
     /**
@@ -89,22 +89,23 @@
 
         this.manager = manager;
 
-        accessController = null;
-        selector = null;
-        resolver = null;
-        policyManager = null;
+        this.accessController = null;
+        this.selector = null;
+        this.resolver = null;
+        this.policyManager = null;
 
-        url = computeUrl(objectModel, area);
+        this.url = computeUrl(objectModel, area);
 
         try {
-            selector = (ComponentSelector) manager.lookup(AccessControllerResolver.ROLE
+            this.selector = (ComponentSelector) manager.lookup(AccessControllerResolver.ROLE
                     + "Selector");
-            resolver = (AccessControllerResolver) selector
+            this.resolver = (AccessControllerResolver) this.selector
                     .select(AccessControllerResolver.DEFAULT_RESOLVER);
 
-            accessController = (DefaultAccessController) resolver.resolveAccessController(url);
+            this.accessController = (DefaultAccessController) this.resolver
+                    .resolveAccessController(this.url);
 
-            policyManager = (InheritingPolicyManager) accessController.getPolicyManager();
+            this.policyManager = (InheritingPolicyManager) this.accessController.getPolicyManager();
         } catch (Exception e) {
             throw new ProcessingException("Obtaining credentials failed: ", e);
         }
@@ -135,8 +136,8 @@
     }
 
     /**
-     * Returns the credential wrappers for the parent URI of the URL belonging to the request of
-     * this object model.
+     * Returns the credential wrappers for the parent URI of the URL belonging
+     * to the request of this object model.
      * @return An array of CredentialWrappers.
      * @throws ProcessingException when something went wrong.
      */
@@ -146,8 +147,8 @@
 
     /**
      * Returns the credentials of the policy of the selected URL.
-     * @param urlOnly If true, the URL policy credentials are returned. If false, the credentials of
-     *            all ancestor policies are returned.
+     * @param urlOnly If true, the URL policy credentials are returned. If
+     *            false, the credentials of all ancestor policies are returned.
      * @return An array of CredentialWrappers.
      * @throws ProcessingException when something went wrong.
      */
@@ -175,16 +176,18 @@
     }
 
     /**
-     * Computes the webapp URL belonging to an object model with respect to the selected area.
+     * Computes the webapp URL belonging to an object model with respect to the
+     * selected area.
      * @param objectModel The Cocoon object model.
      * @param area The selected area.
      * @return A string.
      * @throws ProcessingException when something went wrong.
      */
-    private static String computeUrl(Map objectModel, String area) throws ProcessingException {
+    private String computeUrl(Map objectModel, String area) throws ProcessingException {
         PageEnvelope envelope;
         try {
-            Publication publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            Publication publication = factory.getPublication(objectModel);
             DocumentIdentityMap map = new DocumentIdentityMap(publication);
             envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(map, objectModel);
         } catch (Exception e) {
@@ -197,8 +200,8 @@
 
     /**
      * Returns the policies for a certain URL.
-     * @param onlyUrl If true, only the URL policies are returned. Otherwise, all ancestor policies
-     *            are returned.
+     * @param onlyUrl If true, only the URL policies are returned. Otherwise,
+     *            all ancestor policies are returned.
      * @return An array of DefaultPolicy objects.
      * @throws ProcessingException when something went wrong.
      */

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java	Tue Jan 25 09:51:54 2005
@@ -93,7 +93,8 @@
                 if (getConfigurationURI() != null) {
                     configurationUri = getConfigurationURI();
                 } else {
-                    Publication publication = PublicationFactory.getPublication(resolver, request);
+                    PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                    Publication publication = factory.getPublication(resolver, request);
                     configurationUri = getConfigurationURI(publication);
                 }
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/workflow/WorkflowAuthorizer.java	Tue Jan 25 09:51:54 2005
@@ -72,7 +72,8 @@
 
             try {
                 resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-                Publication publication = PublicationFactory.getPublication(resolver, request);
+                PublicationFactory pubFactory = PublicationFactory.getInstance(getLogger());
+                Publication publication = pubFactory.getPublication(resolver, request);
                 DocumentIdentityMap map = new DocumentIdentityMap(publication);
                 if (map.getFactory().isDocument(url)) {
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ant/PublicationTask.java	Tue Jan 25 09:51:54 2005
@@ -22,6 +22,9 @@
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Log4JLogger;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.lenya.cms.publication.DocumentIdentityMap;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationException;
@@ -30,6 +33,7 @@
 import org.apache.lenya.cms.site.tree.SiteTree;
 import org.apache.lenya.cms.site.tree.TreeSiteManager;
 import org.apache.lenya.cms.task.AntTask;
+import org.apache.log4j.Category;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
 
@@ -85,7 +89,8 @@
     protected DocumentIdentityMap getIdentityMap() {
         if (this.identityMap == null) {
             try {
-                Publication publication = PublicationFactory.getPublication(getPublicationId(),
+                PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+                Publication publication = factory.getPublication(getPublicationId(),
                         getServletContext().getCanonicalPath());
                 this.identityMap = new DocumentIdentityMap(publication);
             } catch (IOException e) {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/DocumentIdExistsAction.java	Tue Jan 25 09:51:54 2005
@@ -76,7 +76,8 @@
             return null;
         }
 
-        Publication publication = PublicationFactory.getPublication(objectModel);
+        PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+        Publication publication = factory.getPublication(objectModel);
         DocumentIdentityMap map = new DocumentIdentityMap(publication);
         PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(map, objectModel);
         Document document = map.getFactory().get(envelope.getDocument().getArea(), documentId);

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/LanguageExistsAction.java	Tue Jan 25 09:51:54 2005
@@ -67,7 +67,8 @@
     public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source,
             Parameters parameters) throws Exception {
 
-        Publication pub = PublicationFactory.getPublication(objectModel);
+        PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+        Publication pub = factory.getPublication(objectModel);
         DocumentIdentityMap map = new DocumentIdentityMap(pub);
         PageEnvelope pageEnvelope = PageEnvelopeFactory.getInstance().getPageEnvelope(map,
                 objectModel);

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java	Tue Jan 25 09:51:54 2005
@@ -68,7 +68,8 @@
         }
 
         PageEnvelope envelope = null;
-        Publication publication = PublicationFactory.getPublication(objectModel);
+        PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+        Publication publication = factory.getPublication(objectModel);
         DocumentIdentityMap map = new DocumentIdentityMap(publication);
         Document document = null;
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/UploadAction.java	Tue Jan 25 09:51:54 2005
@@ -100,7 +100,8 @@
 
         Map results = new HashMap();
         Request request = ObjectModelHelper.getRequest(objectModel);
-        Publication pub = PublicationFactory.getPublication(objectModel);
+        PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+        Publication pub = factory.getPublication(objectModel);
         DocumentIdentityMap map = new DocumentIdentityMap(pub);
         pageEnvelope = PageEnvelopeFactory.getInstance().getPageEnvelope(map, objectModel);
         document = pageEnvelope.getDocument();

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/acting/WorkflowInvokerAction.java	Tue Jan 25 09:51:54 2005
@@ -73,7 +73,8 @@
             getLogger().debug("    Event:       [" + eventName + "]");
         }
 
-        Publication pub = PublicationFactory.getPublication(objectModel);
+        PublicationFactory pubFactory = PublicationFactory.getInstance(getLogger());
+        Publication pub = pubFactory.getPublication(objectModel);
         DocumentIdentityMap map = new DocumentIdentityMap(pub);
         Document document = map.getFactory().get(area, documentId, language);
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PublicationTemplateFallbackModule.java	Tue Jan 25 09:51:54 2005
@@ -49,7 +49,8 @@
         try {
             PublicationTemplateManager templateManager = (PublicationTemplateManager) this.manager
                     .lookup(PublicationTemplateManager.ROLE);
-            Publication publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            Publication publication = factory.getPublication(objectModel);
             templateManager.setup(publication);
 
             ExistingSourceResolver resolver = new ExistingSourceResolver();

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java	Tue Jan 25 09:51:54 2005
@@ -14,9 +14,6 @@
  *  limitations under the License.
  *
  */
-
-/* $Id$  */
-
 package org.apache.lenya.cms.cocoon.flow;
 
 import java.io.File;
@@ -27,20 +24,11 @@
 import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.ac.Identity;
-import org.apache.lenya.ac.Machine;
-import org.apache.lenya.ac.Role;
-import org.apache.lenya.ac.User;
-import org.apache.lenya.ac.impl.PolicyAuthorizer;
-import org.apache.lenya.cms.publication.DocumentIdentityMap;
 import org.apache.lenya.cms.publication.PageEnvelope;
 import org.apache.lenya.cms.publication.PageEnvelopeException;
-import org.apache.lenya.cms.publication.PageEnvelopeFactory;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationFactory;
 import org.apache.lenya.cms.publication.util.DocumentHelper;
 import org.apache.lenya.cms.rc.FileReservedCheckInException;
 import org.apache.lenya.cms.rc.RCEnvironment;
@@ -49,23 +37,11 @@
 import org.apache.lenya.cms.workflow.WorkflowFactory;
 import org.apache.lenya.workflow.Situation;
 import org.apache.lenya.workflow.WorkflowException;
-import org.apache.log4j.Category;
 
 /**
  * Flowscript utility class.
- * The FOM_Cocoon object is not passed in the constructor to avoid
- * errors. This way, not the initial, but the current FOM_Cocoon
- * object is used by the methods.
  */
-public class FlowHelper {
-
-    private static final Category log = Category.getInstance(FlowHelper.class);
-
-    /**
-     * Ctor.
-     */
-    public FlowHelper() {
-    }
+public interface FlowHelper {
 
     /**
      * Returns the current workflow situation.
@@ -73,34 +49,7 @@
      * @return A situation.
      * @throws AccessControlException when something went wrong.
      */
-    public Situation getSituation(FOM_Cocoon cocoon) throws AccessControlException {
-        Request request = ObjectModelHelper.getRequest(cocoon.getObjectModel());
-        Session session = request.getSession();
-        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
-
-        String userId = "";
-        String ipAddress = "";
-
-        User user = identity.getUser();
-        if (user != null) {
-            userId = user.getId();
-        }
-
-        Machine machine = identity.getMachine();
-        if (machine != null) {
-            ipAddress = machine.getIp();
-        }
-
-        Role[] roles = PolicyAuthorizer.getRoles(request);
-        String[] roleIds = new String[roles.length];
-        for (int i = 0; i < roles.length; i++) {
-            roleIds[i] = roles[i].getId();
-        }
-
-        WorkflowFactory factory = WorkflowFactory.newInstance();
-        Situation situation = factory.buildSituation(roleIds, userId, ipAddress);
-        return situation;
-    }
+    Situation getSituation(FOM_Cocoon cocoon) throws AccessControlException;
 
     /**
      * Returns the current page envelope.
@@ -108,104 +57,59 @@
      * @return A page envelope.
      * @throws PageEnvelopeException when something went wrong.
      */
-    public PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException {
-        
-        Publication pub;
-        try {
-            pub = PublicationFactory.getPublication(cocoon.getObjectModel());
-        } catch (PublicationException e) {
-            throw new PageEnvelopeException(e);
-        }
-        DocumentIdentityMap map = new DocumentIdentityMap(pub);
-        PageEnvelopeFactory factory = PageEnvelopeFactory.getInstance();
-        return factory.getPageEnvelope(map, cocoon.getObjectModel());
-    }
+    PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException;
 
     /**
      * Returns the request URI of the current request.
      * @param cocoon The FOM_Cocoon object.
      * @return A string.
      */
-    public String getRequestURI(FOM_Cocoon cocoon) {
-        return cocoon.getRequest().getRequestURI();
-    }
-    
+    String getRequestURI(FOM_Cocoon cocoon);
+
     /**
      * Returns the request object of the current request.
      * @param cocoon The FOM_Cocoon object.
      * @return A request object.
      */
-    public Request getRequest(FOM_Cocoon cocoon) {
-        return cocoon.getRequest();
-    }
+    Request getRequest(FOM_Cocoon cocoon);
 
     /**
      * Returns the Cocoon Object Model
      * @param cocoon The Flow Object Model of Cocoon
      * @return The object model
      */
-    public Map getObjectModel(FOM_Cocoon cocoon) {
-        return cocoon.getObjectModel();
-    }
-    
+    Map getObjectModel(FOM_Cocoon cocoon);
+
     /**
-     * Returns a DocumentHelper instance.  
-     * @param cocoon The Flow Object Model of Cocoon 
+     * Returns a DocumentHelper instance.
+     * @param cocoon The Flow Object Model of Cocoon
      * @return The document helper
      * @see DocumentHelper
      */
-    public DocumentHelper getDocumentHelper(FOM_Cocoon cocoon) {
-        return new DocumentHelper(cocoon.getObjectModel());
-    }
-    
-    public static final String SEPARATOR = ":";
+    DocumentHelper getDocumentHelper(FOM_Cocoon cocoon);
 
     /**
-     * Resolves the request parameter value for a specific name.
-     * The parameter names are encoded as <code>{name}:{value}.{axis}</code>.
-     * This is a workaround for the &lt;input type="image"/&gt;
-     * bug in Internet Explorer.
+     * Resolves the request parameter value for a specific name. The parameter
+     * names are encoded as <code>{name}:{value}.{axis}</code>. This is a
+     * workaround for the &lt;input type="image"/&gt; bug in Internet Explorer.
      * @param cocoon The FOM_Cocoon object.
      * @param parameterName The request parameter name.
      * @return A string.
      */
-    public String getImageParameterValue(FOM_Cocoon cocoon, String parameterName) {
-
-        log.debug("Resolving parameter value for name [" + parameterName + "]");
+    String getImageParameterValue(FOM_Cocoon cocoon, String parameterName);
 
-        Request request = cocoon.getRequest();
-        String value = request.getParameter(parameterName);
-
-        if (value == null) {
-            String prefix = parameterName + SEPARATOR;
-            Enumeration e = request.getParameterNames();
-            while (e.hasMoreElements() && value == null) {
-                String name = (String) e.nextElement();
-                if (name.startsWith(prefix)) {
-                    log.debug("Complete parameter name: [" + name + "]");
-                    value = name.substring(prefix.length(), name.length() - 2);
-                    log.debug("Resolved value: [" + value + "]");
-                }
-            }
-        }
-
-        return value;
-    }
-    
     /**
-     * Trigger a workflow event for the document associated with the current PageEnvelope.
+     * Trigger a workflow event for the document associated with the current
+     * PageEnvelope.
      * @param cocoon The Cocoon Flow Object Model
      * @param event The name of the workflow event to trigger.
      * @throws WorkflowException If an workflow error occurs
      * @throws PageEnvelopeException Page envelope can not operate properly.
      * @throws AccessControlException If an access control violation occurs.
      */
-    public void triggerWorkflow(FOM_Cocoon cocoon, String event) 
-    throws WorkflowException, PageEnvelopeException, AccessControlException {
-        final WorkflowDocument wf = (WorkflowDocument)WorkflowFactory.newInstance().buildInstance(getPageEnvelope(cocoon).getDocument());
-        wf.invoke(getSituation(cocoon), event);
-    }
-    
+    void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
+            PageEnvelopeException, AccessControlException;
+
     /**
      * Get a RevisionController instance.
      * @param cocoon The Cocoon Flow Object Model
@@ -214,35 +118,17 @@
      * @see PageEnvelope
      * @see RevisionController
      */
-    public RevisionController getRevisionController(FOM_Cocoon cocoon) 
-    throws PageEnvelopeException, IOException {        
-        final RevisionController rc = null;
-        final Publication publication = getPageEnvelope(cocoon).getPublication();
-        final String publicationPath = publication.getDirectory().getCanonicalPath();
-        final RCEnvironment rcEnvironment = RCEnvironment.getInstance(publication.getServletContext().getCanonicalPath());
-        String rcmlDirectory = rcEnvironment.getRCMLDirectory();
-        rcmlDirectory = publicationPath + File.separator + rcmlDirectory;
-        String backupDirectory = rcEnvironment.getBackupDirectory();
-        backupDirectory = publicationPath + File.separator + backupDirectory;
-
-        return new RevisionController(rcmlDirectory, backupDirectory, publicationPath);     
-    }
-    
+    RevisionController getRevisionController(FOM_Cocoon cocoon) throws PageEnvelopeException,
+            IOException;
+
     /**
      * Checkis in the current document from the PageEnvelope context.
      * @param cocoon The Cocoon Flow Object Model
      * @param backup Wether a new revision should be created.
-     * @throws FileReservedCheckInException 
+     * @throws FileReservedCheckInException
      * @throws Exception
      * @see RevisionController#reservedCheckIn(String, String, boolean)
      */
-    public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) 
-    throws FileReservedCheckInException, Exception
-    {
-        final Identity identity = (Identity) ObjectModelHelper.getRequest(cocoon.getObjectModel()).getSession().getAttribute(Identity.class.getName());
-        final PageEnvelope pageEnvelope = getPageEnvelope(cocoon);
-        final Publication publication = getPageEnvelope(cocoon).getPublication();
-        final String filename = pageEnvelope.getDocument().getFile().getCanonicalPath().substring(publication.getDirectory().getCanonicalPath().length());   
-        getRevisionController(cocoon).reservedCheckIn(filename, identity.getUser().getId(), backup);
-    }
-}
+    void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws FileReservedCheckInException,
+            Exception;
+}
\ No newline at end of file

Added: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java?view=auto&rev=126400
==============================================================================
--- (empty file)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java	Tue Jan 25 09:51:54 2005
@@ -0,0 +1,216 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+/* $Id: FlowHelper.java 123348 2004-12-25 22:49:57Z gregor $  */
+
+package org.apache.lenya.cms.cocoon.flow;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
+import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.Identity;
+import org.apache.lenya.ac.Machine;
+import org.apache.lenya.ac.Role;
+import org.apache.lenya.ac.User;
+import org.apache.lenya.ac.impl.PolicyAuthorizer;
+import org.apache.lenya.cms.publication.DocumentIdentityMap;
+import org.apache.lenya.cms.publication.PageEnvelope;
+import org.apache.lenya.cms.publication.PageEnvelopeException;
+import org.apache.lenya.cms.publication.PageEnvelopeFactory;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.PublicationFactory;
+import org.apache.lenya.cms.publication.util.DocumentHelper;
+import org.apache.lenya.cms.rc.FileReservedCheckInException;
+import org.apache.lenya.cms.rc.RCEnvironment;
+import org.apache.lenya.cms.rc.RevisionController;
+import org.apache.lenya.cms.workflow.WorkflowDocument;
+import org.apache.lenya.cms.workflow.WorkflowFactory;
+import org.apache.lenya.workflow.Situation;
+import org.apache.lenya.workflow.WorkflowException;
+
+/**
+ * Flowscript utility class. The FOM_Cocoon object is not passed in the
+ * constructor to avoid errors. This way, not the initial, but the current
+ * FOM_Cocoon object is used by the methods.
+ */
+public class FlowHelperImpl extends AbstractLogEnabled implements FlowHelper {
+
+    /**
+     * Ctor.
+     */
+    public FlowHelperImpl() {
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getSituation(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public Situation getSituation(FOM_Cocoon cocoon) throws AccessControlException {
+        Request request = ObjectModelHelper.getRequest(cocoon.getObjectModel());
+        Session session = request.getSession();
+        Identity identity = (Identity) session.getAttribute(Identity.class.getName());
+
+        String userId = "";
+        String ipAddress = "";
+
+        User user = identity.getUser();
+        if (user != null) {
+            userId = user.getId();
+        }
+
+        Machine machine = identity.getMachine();
+        if (machine != null) {
+            ipAddress = machine.getIp();
+        }
+
+        Role[] roles = PolicyAuthorizer.getRoles(request);
+        String[] roleIds = new String[roles.length];
+        for (int i = 0; i < roles.length; i++) {
+            roleIds[i] = roles[i].getId();
+        }
+
+        WorkflowFactory factory = WorkflowFactory.newInstance();
+        Situation situation = factory.buildSituation(roleIds, userId, ipAddress);
+        return situation;
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getPageEnvelope(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public PageEnvelope getPageEnvelope(FOM_Cocoon cocoon) throws PageEnvelopeException {
+
+        Publication pub;
+        try {
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            pub = factory.getPublication(cocoon.getObjectModel());
+        } catch (PublicationException e) {
+            throw new PageEnvelopeException(e);
+        }
+        DocumentIdentityMap map = new DocumentIdentityMap(pub);
+        PageEnvelopeFactory factory = PageEnvelopeFactory.getInstance();
+        return factory.getPageEnvelope(map, cocoon.getObjectModel());
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getRequestURI(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public String getRequestURI(FOM_Cocoon cocoon) {
+        return cocoon.getRequest().getRequestURI();
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getRequest(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public Request getRequest(FOM_Cocoon cocoon) {
+        return cocoon.getRequest();
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getObjectModel(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public Map getObjectModel(FOM_Cocoon cocoon) {
+        return cocoon.getObjectModel();
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getDocumentHelper(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public DocumentHelper getDocumentHelper(FOM_Cocoon cocoon) {
+        return new DocumentHelper(cocoon.getObjectModel());
+    }
+
+    public static final String SEPARATOR = ":";
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getImageParameterValue(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
+     *      java.lang.String)
+     */
+    public String getImageParameterValue(FOM_Cocoon cocoon, String parameterName) {
+
+        getLogger().debug("Resolving parameter value for name [" + parameterName + "]");
+
+        Request request = cocoon.getRequest();
+        String value = request.getParameter(parameterName);
+
+        if (value == null) {
+            String prefix = parameterName + SEPARATOR;
+            Enumeration e = request.getParameterNames();
+            while (e.hasMoreElements() && value == null) {
+                String name = (String) e.nextElement();
+                if (name.startsWith(prefix)) {
+                    getLogger().debug("Complete parameter name: [" + name + "]");
+                    value = name.substring(prefix.length(), name.length() - 2);
+                    getLogger().debug("Resolved value: [" + value + "]");
+                }
+            }
+        }
+
+        return value;
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#triggerWorkflow(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
+     *      java.lang.String)
+     */
+    public void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
+            PageEnvelopeException, AccessControlException {
+        final WorkflowDocument wf = (WorkflowDocument) WorkflowFactory.newInstance()
+                .buildInstance(getPageEnvelope(cocoon).getDocument());
+        wf.invoke(getSituation(cocoon), event);
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#getRevisionController(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon)
+     */
+    public RevisionController getRevisionController(FOM_Cocoon cocoon)
+            throws PageEnvelopeException, IOException {
+        final RevisionController rc = null;
+        final Publication publication = getPageEnvelope(cocoon).getPublication();
+        final String publicationPath = publication.getDirectory().getCanonicalPath();
+        final RCEnvironment rcEnvironment = RCEnvironment.getInstance(publication
+                .getServletContext().getCanonicalPath());
+        String rcmlDirectory = rcEnvironment.getRCMLDirectory();
+        rcmlDirectory = publicationPath + File.separator + rcmlDirectory;
+        String backupDirectory = rcEnvironment.getBackupDirectory();
+        backupDirectory = publicationPath + File.separator + backupDirectory;
+
+        return new RevisionController(rcmlDirectory, backupDirectory, publicationPath);
+    }
+
+    /**
+     * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#reservedCheckIn(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
+     *      boolean)
+     */
+    public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup)
+            throws FileReservedCheckInException, Exception {
+        final Identity identity = (Identity) ObjectModelHelper.getRequest(cocoon.getObjectModel())
+                .getSession().getAttribute(Identity.class.getName());
+        final PageEnvelope pageEnvelope = getPageEnvelope(cocoon);
+        final Publication publication = getPageEnvelope(cocoon).getPublication();
+        final String filename = pageEnvelope.getDocument().getFile().getCanonicalPath()
+                .substring(publication.getDirectory().getCanonicalPath().length());
+        getRevisionController(cocoon).reservedCheckIn(filename, identity.getUser().getId(), backup);
+    }
+}
\ No newline at end of file

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/scheduler/SchedulerHelper.java	Tue Jan 25 09:51:54 2005
@@ -20,6 +20,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.ProcessingException;
@@ -70,7 +71,8 @@
 
             NamespaceMap schedulerParameters = new NamespaceMap(LoadQuartzServlet.PREFIX);
 
-            Publication pub = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+            Publication pub = factory.getPublication(objectModel);
             DocumentIdentityMap identityMap = new DocumentIdentityMap(pub);
             PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(identityMap,
                     objectModel);

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/LenyaSourceFactory.java	Tue Jan 25 09:51:54 2005
@@ -101,7 +101,8 @@
 
                 Map objectModel = ContextHelper.getObjectModel(this.context);
                 try {
-                    Publication pub = PublicationFactory.getPublication(objectModel);
+                    PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                    Publication pub = factory.getPublication(objectModel);
                     DocumentIdentityMap map = new DocumentIdentityMap(pub);
                     PageEnvelopeFactory pageEnvelopeFactory = PageEnvelopeFactory.getInstance();
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/task/CocoonTaskWrapper.java	Tue Jan 25 09:51:54 2005
@@ -22,6 +22,7 @@
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -62,7 +63,8 @@
 
 		Publication publication;
 		try {
-			publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+			publication = factory.getPublication(objectModel);
 		} catch (PublicationException e) {
 			throw new ExecutionException(e);
 		}

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/DocumentIndexTransformer.java	Tue Jan 25 09:51:54 2005
@@ -99,7 +99,8 @@
         	parameterize(parameters);
 
             PageEnvelope envelope = null;
-            Publication pub = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            Publication pub = factory.getPublication(objectModel);
             this.identityMap = new DocumentIdentityMap(pub);
             envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(this.identityMap,
                     objectModel);

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/LinkRewritingTransformer.java	Tue Jan 25 09:51:54 2005
@@ -93,7 +93,8 @@
         super.setup(resolver, objectModel, source, parameters);
 
         try {
-            Publication pub = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            Publication pub = factory.getPublication(objectModel);
             this.identityMap = new DocumentIdentityMap(pub);
             PageEnvelope envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(
                     this.identityMap, objectModel);

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java	Tue Jan 25 09:51:54 2005
@@ -115,7 +115,8 @@
         try {
             roles = PolicyAuthorizer.getRoles(request);
 
-            publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            publication = factory.getPublication(objectModel);
 
             serviceSelector =
                 (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/transformation/WorkflowMenuTransformer.java	Tue Jan 25 09:51:54 2005
@@ -113,7 +113,8 @@
         PageEnvelope envelope = null;
 
         try {
-            Publication pub = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            Publication pub = factory.getPublication(objectModel);
             DocumentIdentityMap map = new DocumentIdentityMap(pub);
             envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(map, objectModel);
         } catch (Exception e) {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/AbstractPublication.java	Tue Jan 25 09:51:54 2005
@@ -27,6 +27,8 @@
 
 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;
@@ -35,7 +37,7 @@
 /**
  * A publication.
  */
-public abstract class AbstractPublication implements Publication {
+public abstract class AbstractPublication extends AbstractLogEnabled implements Publication {
 
     private static Category log = Category.getInstance(AbstractPublication.class);
 
@@ -264,12 +266,12 @@
      */
     public DocumentBuilder getDocumentBuilder() {
 
-        if (documentBuilder == null) {
+        if (this.documentBuilder == null) {
             throw new IllegalStateException(
                     "The document builder was not defined in publication.xconf!");
         }
-
-        return documentBuilder;
+        ContainerUtil.enableLogging(this.documentBuilder, getLogger());
+        return this.documentBuilder;
     }
 
     /**

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java	Tue Jan 25 09:51:54 2005
@@ -25,6 +25,9 @@
 import java.util.Date;
 import java.util.List;
 
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.LogEnabled;
 import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreProxy;
 import org.apache.lenya.cms.site.SiteException;
@@ -33,7 +36,7 @@
 /**
  * A typical CMS document.
  */
-public class DefaultDocument implements Document {
+public class DefaultDocument extends AbstractLogEnabled implements Document {
 
     private String id;
     private DublinCore dublincore;
@@ -41,8 +44,8 @@
     private ResourcesManager resourcesManager;
 
     /**
-     * Creates a new instance of DefaultDocument. The language of the document is the default
-     * language of the publication.
+     * Creates a new instance of DefaultDocument. The language of the document
+     * is the default language of the publication.
      * @param map The identity map the document belongs to.
      * @param id The document ID (starting with a slash).
      * @param area The area.
@@ -59,10 +62,9 @@
         this.identityMap = map;
 
         setArea(area);
-        setLanguage(identityMap.getPublication().getDefaultLanguage());
+        setLanguage(this.identityMap.getPublication().getDefaultLanguage());
 
         this.dublincore = new DublinCoreProxy(this);
-
     }
 
     /**
@@ -87,8 +89,6 @@
         setArea(area);
 
         this.dublincore = new DublinCoreProxy(this);
-        this.resourcesManager = new DefaultResourcesManager(this);
-
     }
 
     /**
@@ -134,7 +134,9 @@
      * @return A file object.
      */
     public File getFile() {
-        return getPublication().getPathMapper().getFile(getPublication(), getArea(), getId(),
+        return getPublication().getPathMapper().getFile(getPublication(),
+                getArea(),
+                getId(),
                 getLanguage());
     }
 
@@ -212,7 +214,6 @@
                 + getCanonicalDocumentURL();
     }
 
-
     /**
      * Sets the area.
      * @param area A string.
@@ -333,6 +334,10 @@
      * @see org.apache.lenya.cms.publication.Document#getResourcesManager()
      */
     public ResourcesManager getResourcesManager() {
+        if (this.resourcesManager == null) {
+            this.resourcesManager = new DefaultResourcesManager(this);
+            ContainerUtil.enableLogging(this.resourcesManager, getLogger());
+        }
         return this.resourcesManager;
     }
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java	Tue Jan 25 09:51:54 2005
@@ -17,31 +17,20 @@
 
 package org.apache.lenya.cms.publication;
 
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
 /**
  * Default document builder implementation.
  * 
  * @version $Id$
  */
-public class DefaultDocumentBuilder implements DocumentBuilder {
+public class DefaultDocumentBuilder extends AbstractLogEnabled implements DocumentBuilder {
     /**
      * Non-public constructor.
      */
-    protected DefaultDocumentBuilder() {
-    }
-
-    private static DefaultDocumentBuilder instance;
-
-    /**
-     * Returns the singleton instance.
-     * 
-     * @return A document builder.
-     */
-    public static DefaultDocumentBuilder getInstance() {
-        if (instance == null) {
-            instance = new DefaultDocumentBuilder();
-        }
-
-        return instance;
+    public DefaultDocumentBuilder() {
     }
 
     /**
@@ -75,6 +64,7 @@
         }
 
         DefaultDocument document = createDocument(map, info.getArea(), documentId, language);
+        ContainerUtil.enableLogging(document, getLogger());
         document.setExtension(extension);
         document.setDocumentURL(originalURL);
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java	Tue Jan 25 09:51:54 2005
@@ -24,10 +24,10 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.parsers.ParserConfigurationException;
@@ -38,24 +38,17 @@
 
 import org.apache.avalon.excalibur.io.FileUtil;
 
-import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.servlet.multipart.Part;
-import org.apache.cocoon.servlet.multipart.PartInMemory;
-import org.apache.cocoon.servlet.multipart.PartOnDisk;
-import org.apache.lenya.xml.DocumentHelper;
-import org.apache.lenya.xml.NamespaceHelper;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreImpl;
 
-import org.w3c.dom.Element;
 
 /**
  * Manager for resources of a CMS document.
  */
-public class DefaultResourcesManager extends AbstractLogEnabled 
-	implements ResourcesManager {
+public class DefaultResourcesManager extends AbstractLogEnabled implements ResourcesManager {
 
-	private Document document = null;
-	private DublinCoreImpl dc = null;
+    private Document document = null;
+    private DublinCoreImpl dc = null;
 
     /**
      * Create a new instance of Resources.
@@ -66,7 +59,6 @@
         this.document = document;
     }
 
-
     /**
      * Add the file in the Part either as a resource or content
      * @param part The Part
@@ -82,7 +74,7 @@
         if (!fileName.matches(FILE_NAME_REGEXP)) {
             // the file name contains characters which mean trouble
             // and are therefore not allowed.
-            getLogger().warn("The filename [" + fileName + "]�is not valid for an asset.");
+            getLogger().warn("The filename [" + fileName + "]� is not valid for an asset.");
         }
         // convert spaces in the file name to underscores
         fileName = fileName.replace(' ', '_');
@@ -92,25 +84,23 @@
         metadata.put("format", mimeType);
         metadata.put("extent", Integer.toString(fileSize));
 
-/*        if (type.equals("resource")) { */
-            resourceFile = new File(this.getPath(), fileName);
-
-            if (!this.getPath().exists()) {
-                this.getPath().mkdirs();
-            }
+        /* if (type.equals("resource")) { */
+        resourceFile = new File(this.getPath(), fileName);
 
-            // create an extra file containing the meta description for
-            // the resource.
-            File metaDataFile = new File(this.getPath(), fileName + RESOURCES_META_SUFFIX);
-            createMetaData(metaDataFile, metadata);
-
-/*        }
-        // must be a content upload then
-        else {
-            resourceFile = new File(document.getFile().getParent(), fileName);
-            getLogger().debug("resourceFile: " + resourceFile);
+        if (!this.getPath().exists()) {
+            this.getPath().mkdirs();
         }
-*/
+
+        // create an extra file containing the meta description for
+        // the resource.
+        File metaDataFile = new File(this.getPath(), fileName + RESOURCES_META_SUFFIX);
+        createMetaData(metaDataFile, metadata);
+
+        /*
+         * } // must be a content upload then else { resourceFile = new
+         * File(document.getFile().getParent(), fileName);
+         * getLogger().debug("resourceFile: " + resourceFile); }
+         */
         saveResource(resourceFile, part);
     }
 
@@ -125,7 +115,7 @@
         if (!resourceFile.exists()) {
             boolean created = resourceFile.createNewFile();
             if (!created) {
-                throw new RuntimeException("The file [" + resourceFile + "]�could not be created.");
+                throw new RuntimeException("The file [" + resourceFile + "]�could not be created.");
             }
         }
 
@@ -160,17 +150,17 @@
 
         assert (metaDataFile.getParentFile().exists());
         try {
-	        dc = new DublinCoreImpl(metaDataFile);
-	        Iterator iter = metadata.keySet().iterator();
-	
-	        while (iter.hasNext()) {
-	            String key = (String) iter.next();
-	            String value = (String) metadata.get(key);
-	            dc.setValue(key, value);
-	        }
-	        dc.save();
-        } catch(Exception e) {
-            getLogger().error("Saving of [" + metaDataFile + "]�failed.");
+            dc = new DublinCoreImpl(metaDataFile);
+            Iterator iter = metadata.keySet().iterator();
+
+            while (iter.hasNext()) {
+                String key = (String) iter.next();
+                String value = (String) metadata.get(key);
+                dc.setValue(key, value);
+            }
+            dc.save();
+        } catch (Exception e) {
+            getLogger().error("Saving of [" + metaDataFile + "]�failed.");
         }
     }
 
@@ -200,15 +190,10 @@
      * @return The path of a resource relative to the context prefix.
      */
     public String getResourceUrl(File resource) {
-        return 
-            getDocument().getPublication().getId() 
-            + "/" 
-            + getDocument().getArea()
-            + getDocument().getId()
-            + "/" 
-            + resource.getName();   
+        return getDocument().getPublication().getId() + "/" + getDocument().getArea()
+                + getDocument().getId() + "/" + resource.getName();
     }
-    
+
     /**
      * Get all resources for the associated document.
      * 
@@ -232,16 +217,16 @@
      * @return All image resources.
      */
     public File[] getImageResources() {
-        return getFiles( new FileFilter() {
-                public boolean accept(File file) {
-                    for(int i=0; i<IMAGE_FILE_EXTENSIONS.length; i++)
-                        if (file.getName().toLowerCase().endsWith(IMAGE_FILE_EXTENSIONS[i]))
-                            return true;
-                    return false;
-                }
-            });
+        return getFiles(new FileFilter() {
+            public boolean accept(File file) {
+                for (int i = 0; i < IMAGE_FILE_EXTENSIONS.length; i++)
+                    if (file.getName().toLowerCase().endsWith(IMAGE_FILE_EXTENSIONS[i]))
+                        return true;
+                return false;
+            }
+        });
     }
-    
+
     /**
      * Returns the resources that are matched by a certain file filter.
      * @param filter A file filter.
@@ -259,7 +244,8 @@
     /**
      * Get the meta data for all resources for the associated document.
      * 
-     * @return all meta data files for the resources for the associated document.
+     * @return all meta data files for the resources for the associated
+     *         document.
      */
     public File[] getMetaFiles() {
         FileFilter filter = new FileFilter() {
@@ -274,47 +260,78 @@
     /**
      * Returns a meta file for a given resource.
      * @param resource A resource the meta file should be returned for.
-     * @return A file containing meta information about a resource. 
-     * Returns null if no meta file was found.
+     * @return A file containing meta information about a resource. Returns null
+     *         if no meta file was found.
      * @throws IllegalArgumentException If resource is a meta file itself.
      */
     public File getMetaFile(final File resource) throws IllegalArgumentException {
-        if(resource.getName().endsWith(RESOURCES_META_SUFFIX))
+        if (resource.getName().endsWith(RESOURCES_META_SUFFIX))
             throw new IllegalArgumentException("File is itself a meta file.");
-        
+
         final FileFilter filter = new FileFilter() {
             public boolean accept(File file) {
-                return file.isFile() && 
-                    file.getName().equals(resource.getName().concat(RESOURCES_META_SUFFIX));
+                return file.isFile()
+                        && file.getName().equals(resource.getName().concat(RESOURCES_META_SUFFIX));
             }
         };
-        
+
         final File[] metaFiles = getFiles(filter);
-        assert(metaFiles.length == 0);
+        assert (metaFiles.length == 0);
         return metaFiles[0];
     }
-    
+
     /**
      * Deletes all resources.
      */
     public void deleteResources() {
 
-        File stopDirectory = new File(getDocument().getPublication().getDirectory(), RESOURCES_PREFIX);
+        File stopDirectory = new File(getDocument().getPublication().getDirectory(),
+                RESOURCES_PREFIX);
 
         File[] resources = getResources();
         for (int i = 0; i < resources.length; i++) {
             resources[i].delete();
-           //TODO replace with excalibur FileUtil.deleteParentDirs(resources[i], stopDirectory);
+            //TODO replace with excalibur
+            // FileUtil.deleteParentDirs(resources[i], stopDirectory);
         }
 
         File[] metas = getMetaFiles();
         for (int i = 0; i < metas.length; i++) {
             metas[i].delete();
-            //TODO replace with excalibur FileUtil.deleteParentDirs(metas[i], stopDirectory);
+            //TODO replace with excalibur FileUtil.deleteParentDirs(metas[i],
+            // stopDirectory);
         }
     }
 
     public Document getDocument() {
         return document;
     }
+
+    /**
+     * @see org.apache.lenya.cms.publication.ResourcesManager#copyResourcesTo(org.apache.lenya.cms.publication.Document)
+     */
+    public void copyResourcesTo(Document destinationDocument) throws Exception {
+
+        if (getLogger().isDebugEnabled()) {
+            getLogger().debug("Copying resources of document [" + getDocument() + "]");
+        }
+
+        ResourcesManager destinationManager = destinationDocument.getResourcesManager();
+
+        List resourcesList = new ArrayList(Arrays.asList(getResources()));
+        resourcesList.addAll(Arrays.asList(getMetaFiles()));
+        File[] resources = (File[]) resourcesList.toArray(new File[resourcesList.size()]);
+        File destinationDirectory = destinationManager.getPath();
+
+        for (int i = 0; i < resources.length; i++) {
+            File destinationResource = new File(destinationDirectory, resources[i].getName());
+
+            if (getLogger().isDebugEnabled()) {
+                getLogger().debug("Copy file [" + resources[i].getAbsolutePath() + "] to ["
+                        + destinationResource.getAbsolutePath() + "]");
+            }
+            FileUtil.copyFile(resources[i], destinationResource);
+        }
+    }
+
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/PublicationFactory.java	Tue Jan 25 09:51:54 2005
@@ -24,6 +24,9 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
 import org.apache.cocoon.environment.Context;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -32,19 +35,32 @@
 import org.apache.excalibur.source.SourceUtil;
 import org.apache.lenya.cms.publication.file.FilePublication;
 import org.apache.lenya.util.ServletHelper;
-import org.apache.log4j.Category;
 
 /**
  * Factory for creating publication objects.
  */
-public final class PublicationFactory {
-
-    private static Category log = Category.getInstance(PublicationFactory.class);
+public final class PublicationFactory extends AbstractLogEnabled {
 
     /**
      * Create a new <code>PublicationFactory</code>.
+     * @param logger The logger to use.
      */
-    private PublicationFactory() {
+    private PublicationFactory(Logger logger) {
+        ContainerUtil.enableLogging(this, logger);
+    }
+    
+    private static PublicationFactory instance;
+    
+    /**
+     * Returns the publication factory instance.
+     * @param logger The logger to use.
+     * @return A publication factory.
+     */
+    public static PublicationFactory getInstance(Logger logger) {
+        if (instance == null) {
+            instance = new PublicationFactory(logger);
+        }
+        return instance;
     }
 
     private static Map keyToPublication = new HashMap();
@@ -60,7 +76,7 @@
      * 
      * @throws PublicationException if there was a problem creating the publication.
      */
-    public static Publication getPublication(Map objectModel) throws PublicationException {
+    public Publication getPublication(Map objectModel) throws PublicationException {
 
         assert objectModel != null;
         Request request = ObjectModelHelper.getRequest(objectModel);
@@ -79,7 +95,7 @@
      * 
      * @throws PublicationException if there was a problem creating the publication.
      */
-    public static Publication getPublication(String id, String servletContextPath)
+    public Publication getPublication(String id, String servletContextPath)
         throws PublicationException {
 
         assert id != null;
@@ -93,6 +109,7 @@
         } else {
             if (PublicationFactory.existsPublication(id, servletContextPath)) {
                 publication = new FilePublication(id, servletContextPath);
+                ContainerUtil.enableLogging(publication, getLogger());
                 keyToPublication.put(key, publication);
             }
         }
@@ -137,10 +154,10 @@
      * 
      * @throws PublicationException if there was a problem creating the publication.
      */
-    public static Publication getPublication(Request request, Context context)
+    public Publication getPublication(Request request, Context context)
         throws PublicationException {
 
-        log.debug("Creating publication from Cocoon object model");
+        getLogger().debug("Creating publication from Cocoon object model");
         String webappUrl = ServletHelper.getWebappURI(request);
         String servletContextPath = context.getRealPath("");
         return getPublication(webappUrl, new File(servletContextPath));
@@ -153,11 +170,11 @@
      * @return A publication
      * @throws PublicationException when something went wrong
      */
-    public static Publication getPublication(String webappUrl, File servletContext)
+    public Publication getPublication(String webappUrl, File servletContext)
         throws PublicationException {
-        log.debug("Creating publication from webapp URL and servlet context");
+        getLogger().debug("Creating publication from webapp URL and servlet context");
 
-        log.debug("    Webapp URL:       [" + webappUrl + "]");
+        getLogger().debug("    Webapp URL:       [" + webappUrl + "]");
         String publicationId = new URLInformation(webappUrl).getPublicationId();
         Publication publication = getPublication(publicationId, servletContext.getAbsolutePath());
         return publication;
@@ -197,16 +214,16 @@
      * @return A publication.
      * @throws PublicationException when something went wrong.
      */
-    public static Publication getPublication(SourceResolver resolver, Request request)
+    public Publication getPublication(SourceResolver resolver, Request request)
         throws PublicationException {
-        log.debug("Creating publication from resolver and request");
+        getLogger().debug("Creating publication from resolver and request");
         Publication publication;
         String webappUri = ServletHelper.getWebappURI(request);
         Source source = null;
         try {
             source = resolver.resolveURI("context:///");
             File servletContext = SourceUtil.getFile(source);
-            publication = PublicationFactory.getPublication(webappUri, servletContext);
+            publication = getPublication(webappUri, servletContext);
         } catch (Exception e) {
             throw new PublicationException(e);
         } finally {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/ResourcesManager.java	Tue Jan 25 09:51:54 2005
@@ -29,30 +29,30 @@
  */
 public interface ResourcesManager {
 
-    public static final String CONTENT_PREFIX = "content";
-    public static final String RESOURCES_PREFIX = "resources";
-    public static final String RESOURCES_META_SUFFIX = ".meta";
+    final String CONTENT_PREFIX = "content";
+    final String RESOURCES_PREFIX = "resources";
+    final String RESOURCES_META_SUFFIX = ".meta";
 
-    public static final String UPLOADASSET_PARAM_NAME = "properties.asset.data";
-    public static final String UPLOADASSET_PARAM_PREFIX = "properties.asset.";
+    final String UPLOADASSET_PARAM_NAME = "properties.asset.data";
+    final String UPLOADASSET_PARAM_PREFIX = "properties.asset.";
 
-    public static final String UPLOADASSET_RETURN_FILESIZE = "file-size";
-    public static final String UPLOADASSET_RETURN_MIMETYPE = "mime-type";
+    final String UPLOADASSET_RETURN_FILESIZE = "file-size";
+    final String UPLOADASSET_RETURN_MIMETYPE = "mime-type";
 
-    public static final String FILE_NAME_REGEXP = "[-a-zA-Z0-9_.]+";
-    public static final String[] IMAGE_FILE_EXTENSIONS = {".jpg", ".png", ".bmp", ".gif", ".svg"};
+    final String FILE_NAME_REGEXP = "[-a-zA-Z0-9_.]+";
+    final String[] IMAGE_FILE_EXTENSIONS = { ".jpg", ".png", ".bmp", ".gif", ".svg" };
 
     // optional parameters for meta data according to dublin core
-    public static final String[] DUBLIN_CORE_PARAMETERS = { "title", "creator", "subject",
-            "description", "publisher", "contributor", "date", "type", "format", "identifier",
-            "source", "language", "relation", "coverage", "rights" };
+    final String[] DUBLIN_CORE_PARAMETERS = { "title", "creator", "subject", "description",
+            "publisher", "contributor", "date", "type", "format", "identifier", "source",
+            "language", "relation", "coverage", "rights" };
 
     /**
      * Add a resource to the document.
      * @param part the part that contains the uploaded file
      * @param metadata the metadata for the resource
      */
-    public void addResource(Part part, Map metadata) throws Exception;
+    void addResource(Part part, Map metadata) throws Exception;
 
     /**
      * Get the path to the resources.
@@ -60,50 +60,59 @@
      * @return the path to the resources
      * @deprecated the resource manager should not expose storage details.
      */
-    public File getPath();
+    File getPath();
 
     /**
      * Returns the path of a resource relative to the context prefix.
      * @return The path of a resource relative to the context prefix.
      */
-    public String getResourceUrl(File resource);
-    
+    String getResourceUrl(File resource);
+
     /**
      * Get all resources for the associated document.
      * 
      * @return all resources of the associated document
      */
-    public File[] getResources();
+    File[] getResources();
 
     /**
      * Return all resources which are images.
      * @return All image resources.
      */
-    public File[] getImageResources();
-    
+    File[] getImageResources();
+
     /**
      * Get the meta data for all resources for the associated document.
      * 
-     * @return all meta data files for the resources for the associated document.
+     * @return all meta data files for the resources for the associated
+     *         document.
      */
-    public File[] getMetaFiles();
+    File[] getMetaFiles();
 
     /**
      * Returns a meta file for a given resource.
      * @param resource A resource the meta file should be returned for.
-     * @return A file containing meta information about a resource. 
-     * Returns null if no meta file was found.
+     * @return A file containing meta information about a resource. Returns null
+     *         if no meta file was found.
      * @throws IllegalArgumentException If resource is a meta file itself.
      */
-    public File getMetaFile(final File resource) throws IllegalArgumentException;
-    
+    File getMetaFile(final File resource) throws IllegalArgumentException;
+
     /**
      * Deletes all resources.
      */
-    public void deleteResources();
+    void deleteResources();
 
     /**
      * Gets the document this resource manager belongs to.
      */
-    public Document getDocument();
+    Document getDocument();
+
+    /**
+     * Copies the resources of a document to another document.
+     * @param destinationDocument The destination document.
+     * @throws Exception when something went wrong.
+     */
+    void copyResourcesTo(Document destinationDocument) throws Exception;
+
 }

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&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java&r2=126400
==============================================================================
--- 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	Tue Jan 25 09:51:54 2005
@@ -26,6 +26,7 @@
 import java.util.List;
 
 import org.apache.avalon.excalibur.io.FileUtil;
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.avalon.framework.parameters.ParameterException;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentIdentityMap;
@@ -72,10 +73,10 @@
         if (this.map == null) {
             try {
                 String publicationId = getParameters().getParameter(Task.PARAMETER_PUBLICATION_ID);
-                String servletContextPath = getParameters().getParameter(
-                        Task.PARAMETER_SERVLET_CONTEXT);
-                Publication publication = PublicationFactory.getPublication(publicationId,
-                        servletContextPath);
+                String servletContextPath = getParameters()
+                        .getParameter(Task.PARAMETER_SERVLET_CONTEXT);
+                PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+                Publication publication = factory.getPublication(publicationId, servletContextPath);
                 this.map = new DocumentIdentityMap(publication);
             } catch (Exception e) {
                 throw new ExecutionException(e);
@@ -225,13 +226,14 @@
     }
 
     /**
-     * Returns the executable event for the provided {@link #PARAMETER_WORKFLOW_EVENT}parameter.
+     * Returns the executable event for the provided
+     * {@link #PARAMETER_WORKFLOW_EVENT}parameter.
      * @param instance The workflow instance.
      * @param situation The situation.
      * @return An event.
      * @throws WorkflowException when something went wrong.
-     * @throws ParameterException when the {@link #PARAMETER_WORKFLOW_EVENT}parameter could not be
-     *             resolved.
+     * @throws ParameterException when the {@link #PARAMETER_WORKFLOW_EVENT}
+     *             parameter could not be resolved.
      */
     protected Event getExecutableEvent(SynchronizedWorkflowInstances instance, Situation situation)
             throws WorkflowException, ParameterException {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/templating/PublicationTemplateManagerImpl.java	Tue Jan 25 09:51:54 2005
@@ -36,7 +36,8 @@
 /**
  * Manager for publication templates.
  * 
- * @version $Id$
+ * @version $Id: PublicationTemplateManagerImpl.java 123348 2004-12-25 22:49:57Z
+ *          gregor $
  */
 public class PublicationTemplateManagerImpl extends AbstractLogEnabled implements
         PublicationTemplateManager, Serviceable {
@@ -72,8 +73,9 @@
                 Configuration[] templateConfigs = templatesConfig.getChildren(ELEMENT_TEMPLATE);
                 for (int i = 0; i < templateConfigs.length; i++) {
                     String templateId = templateConfigs[i].getAttribute(ATTRIBUTE_ID);
-                    Publication template = PublicationFactory.getPublication(templateId,
-                            publication.getServletContext().getAbsolutePath());
+                    PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                    Publication template = factory.getPublication(templateId, publication
+                            .getServletContext().getAbsolutePath());
                     templates.add(template);
                 }
                 this.templatePublications = (Publication[]) templates
@@ -162,7 +164,7 @@
         for (int i = 0; i < publications.length; i++) {
             uris.add(getBaseURI(publications[i]));
         }
-        
+
         String coreBaseURI = "context://";
         uris.add(coreBaseURI);
 
@@ -220,7 +222,7 @@
         for (int i = 0; i < templates.length; i++) {
             publications.add(templates[i]);
         }
-        
+
         return (Publication[]) publications.toArray(new Publication[publications.size()]);
     }
 

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&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java&r2=126400
==============================================================================
--- 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	Tue Jan 25 09:51:54 2005
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -55,7 +56,8 @@
         this.objectModel = objectModel;
         Publication publication;
         try {
-            publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+            publication = factory.getPublication(objectModel);
         } catch (PublicationException e) {
             throw new RuntimeException(e);
         }

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&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/scheduler/LoadQuartzServlet.java	Tue Jan 25 09:51:54 2005
@@ -39,6 +39,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.lenya.cms.publication.DocumentBuildException;
 import org.apache.lenya.cms.publication.DocumentIdentityMap;
 import org.apache.lenya.cms.publication.Publication;
@@ -150,8 +151,8 @@
     }
 
     /**
-     * This method sets a ShutdownHook to the system This traps the CTRL+C or kill signal and
-     * shutdows Correctly the system.
+     * This method sets a ShutdownHook to the system This traps the CTRL+C or
+     * kill signal and shutdows Correctly the system.
      * 
      * @throws Exception when something went wrong.
      */
@@ -239,13 +240,14 @@
                 getScheduler().deleteJob(jobId, publicationId);
             } else if (action.equals(DOCUMENT_DELETED)) {
 
-                Publication publication = PublicationFactory.getPublication(publicationId,
+                PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+                Publication publication = factory.getPublication(publicationId,
                         getServletContextDirectory().getAbsolutePath());
 
                 String documentUrl = (String) schedulerParameters.get(PARAMETER_DOCUMENT_URL);
                 DocumentIdentityMap map = new DocumentIdentityMap(publication);
-                org.apache.lenya.cms.publication.Document document = map.getFactory().getFromURL(
-                        documentUrl);
+                org.apache.lenya.cms.publication.Document document = map.getFactory()
+                        .getFromURL(documentUrl);
                 deleteDocumentJobs(document);
             }
 
@@ -300,7 +302,8 @@
      */
     public void deleteDocumentJobs(org.apache.lenya.cms.publication.Document document)
             throws DocumentBuildException, SchedulerException, PublicationException {
-        log.debug("Requested to delete jobs for document URL [" + document.getCanonicalWebappURL() + "]");
+        log.debug("Requested to delete jobs for document URL [" + document.getCanonicalWebappURL()
+                + "]");
         getScheduler().deleteJobs(document);
     }
 
@@ -382,7 +385,8 @@
     }
 
     /**
-     * Generates the request URI needed to delete the jobs for a certain document.
+     * Generates the request URI needed to delete the jobs for a certain
+     * document.
      * @param document The document.
      * @return A string.
      */

Modified: lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/scheduler/SchedulerWrapper.java	Tue Jan 25 09:51:54 2005
@@ -31,6 +31,7 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationException;
 import org.apache.lenya.cms.publication.PublicationFactory;
@@ -217,7 +218,8 @@
      * @throws PublicationException when the publication does not exist.
      */
     protected Publication getPublication(String jobGroup) throws PublicationException {
-        return PublicationFactory.getPublication(jobGroup, getServletContextPath());
+        PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+        return factory.getPublication(jobGroup, getServletContextPath());
     }
 
     /**

Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java	Tue Jan 25 09:51:54 2005
@@ -173,7 +173,11 @@
         } else {
 
             SiteTreeNode[] siblings = sourceNode.getNextSiblings();
-            String parentId = sourceNode.getParent().getAbsoluteId();
+            SiteTreeNode parent = sourceNode.getParent();
+            String parentId = "";
+            if (parent != null) {
+                parentId = parent.getAbsoluteId();
+            }
             SiteTreeNode sibling = null;
             String siblingDocId = null;
 

Modified: lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/task/TaskParameters.java	Tue Jan 25 09:51:54 2005
@@ -1,37 +1,34 @@
 /*
- * Copyright  1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
+ * Copyright 1999-2004 The Apache Software Foundation
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *  
  */
 
-/* $Id$  */
+/* $Id$ */
 
 package org.apache.lenya.cms.task;
 
 import java.util.Map;
 
+import org.apache.avalon.framework.logger.ConsoleLogger;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationException;
 import org.apache.lenya.cms.publication.PublicationFactory;
 
 public class TaskParameters extends ParameterWrapper {
-    public static final String[] REQUIRED_KEYS =
-        {
-            Task.PARAMETER_SERVLET_CONTEXT,
-            Task.PARAMETER_SERVER_URI,
-            Task.PARAMETER_SERVER_PORT,
-            Task.PARAMETER_CONTEXT_PREFIX,
+    public static final String[] REQUIRED_KEYS = { Task.PARAMETER_SERVLET_CONTEXT,
+            Task.PARAMETER_SERVER_URI, Task.PARAMETER_SERVER_PORT, Task.PARAMETER_CONTEXT_PREFIX,
             Task.PARAMETER_PUBLICATION_ID };
 
     /**
@@ -66,9 +63,8 @@
     public Publication getPublication() throws ExecutionException {
         Publication publication;
         try {
-            publication =
-                PublicationFactory.getPublication(
-                    get(Task.PARAMETER_PUBLICATION_ID),
+            PublicationFactory factory = PublicationFactory.getInstance(new ConsoleLogger());
+            publication = factory.getPublication(get(Task.PARAMETER_PUBLICATION_ID),
                     get(Task.PARAMETER_SERVLET_CONTEXT));
         } catch (PublicationException e) {
             throw new ExecutionException(e);
@@ -93,4 +89,4 @@
         put(Task.PARAMETER_SERVLET_CONTEXT, servletContextPath);
     }
 
-}
+}
\ No newline at end of file

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/DocumentUsecase.java	Tue Jan 25 09:51:54 2005
@@ -77,7 +77,8 @@
 
     /**
      * Returns the document to be redirected to after the usecase has been
-     * completed.
+     * completed. If the parameter <code>success</code> is false, the source
+     * document is returned (override this method to change this behaviour).
      * @param success If the usecase was successfully completed.
      * @return A document.
      */
@@ -130,6 +131,15 @@
      */
     protected void triggerWorkflow(String event) {
         triggerWorkflow(event, getSourceDocument());
+    }
+    
+    /**
+     * Checks if an event can be executed on the source document.
+     * @param event The event.
+     * @return A boolean value.
+     */
+    protected boolean canExecuteWorkflow(String event) {
+        return canExecuteWorkflow(event, getSourceDocument());
     }
 
     /**

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&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UnitOfWorkImpl.java	Tue Jan 25 09:51:54 2005
@@ -31,7 +31,7 @@
 /**
  * Abstract base class for operations on documents.
  * 
- * @version $Id: UnitOfWork.java,v 1.2 2004/06/28 20:25:32 andreas Exp $
+ * @version $Id$
  */
 public class UnitOfWorkImpl extends AbstractLogEnabled implements UnitOfWork, Contextualizable {
 
@@ -53,7 +53,8 @@
             Map objectModel = ContextHelper.getObjectModel(this.context);
             Publication publication;
             try {
-                publication = PublicationFactory.getPublication(objectModel);
+                PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+                publication = factory.getPublication(objectModel);
             } catch (PublicationException e) {
                 throw new RuntimeException(e);
             }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/UsecaseResolverImpl.java	Tue Jan 25 09:51:54 2005
@@ -136,7 +136,8 @@
         Map objectModel = ContextHelper.getObjectModel(getContext());
         Publication publication;
         try {
-            publication = PublicationFactory.getPublication(objectModel);
+            PublicationFactory factory = PublicationFactory.getInstance(getLogger());
+            publication = factory.getPublication(objectModel);
         } catch (PublicationException e) {
             throw new RuntimeException(e);
         }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/usecase/WorkflowUsecase.java	Tue Jan 25 09:51:54 2005
@@ -63,10 +63,9 @@
      * @param document The document.
      */
     protected void triggerWorkflow(String event, Document document) {
-        WorkflowFactory factory = WorkflowFactory.newInstance();
         try {
-            WorkflowInstance instance = factory.buildInstance(document);
-            Event executableEvent = getExecutableEvent(instance, event);
+            WorkflowInstance instance = getWorkflowInstance(document);
+            Event executableEvent = getExecutableEvent(event, document);
 
             if (executableEvent == null) {
                 throw new RuntimeException("The event [" + event
@@ -79,14 +78,30 @@
     }
 
     /**
+     * Returns the workflow instance for a document.
+     * @param document The document.
+     * @return A workflow instance.
+     * @throws WorkflowException if an error occurs.
+     */
+    protected WorkflowInstance getWorkflowInstance(Document document) throws WorkflowException {
+        WorkflowFactory factory = WorkflowFactory.newInstance();
+        WorkflowInstance instance = factory.buildInstance(document);
+        return instance;
+    }
+
+    /**
      * Returns the event object if an event is exectuable.
-     * @param instance The workflow instance.
+     * @param document The document.
      * @param event The name of the event.
      * @return An event or <code>null</code> if the event is not executable.
-     * @throws WorkflowException if an error occurs.
      */
-    protected Event getExecutableEvent(WorkflowInstance instance, String event) throws WorkflowException {
-        Event[] events = instance.getExecutableEvents(getSituation());
+    protected Event getExecutableEvent(String event, Document document) {
+        Event[] events;
+        try {
+            events = getWorkflowInstance(document).getExecutableEvents(getSituation());
+        } catch (WorkflowException e) {
+            throw new RuntimeException(e);
+        }
         Event executableEvent = null;
         for (int i = 0; i < events.length; i++) {
             if (events[i].getName().equals(event)) {
@@ -96,4 +111,14 @@
         return executableEvent;
     }
 
-}
+    /**
+     * Checks if a certain event can be executed on a workflow instance.
+     * @param document The document.
+     * @param event The event.
+     * @return A boolean value.
+     */
+    protected boolean canExecuteWorkflow(String event, Document document) {
+        return getExecutableEvent(event, document) != null;
+    }
+
+}
\ No newline at end of file

Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java
Url: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java?view=diff&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java	(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/usecases/InvokeWorkflow.java	Tue Jan 25 09:51:54 2005
@@ -29,7 +29,7 @@
  */
 public class InvokeWorkflow extends DocumentUsecase {
 
-    protected static final String EVENT = "lenya.event";
+    public static final String EVENT = "lenya.event";
 
     /**
      * @return The workflow event to use.
@@ -45,11 +45,7 @@
         super.doCheckPreconditions();
         String eventName = getParameterAsString(EVENT);
 
-        WorkflowInstance instance = WorkflowFactory.newInstance()
-                .buildInstance(getSourceDocument());
-        Event event = getExecutableEvent(instance, eventName);
-
-        if (event == null) {
+        if (canExecuteWorkflow(eventName, getSourceDocument())) {
             addErrorMessage("The event [" + eventName + "] is not executable on document ["
                     + getSourceDocument() + "].");
         }

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&rev=126400&p1=lenya/trunk/src/java/org/apache/lenya/lenya.roles&r1=126399&p2=lenya/trunk/src/java/org/apache/lenya/lenya.roles&r2=126400
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/lenya.roles	(original)
+++ lenya/trunk/src/java/org/apache/lenya/lenya.roles	Tue Jan 25 09:51:54 2005
@@ -98,4 +98,8 @@
   	    shorthand="usecase-resolver"
   	    default-class="org.apache.lenya.cms.publication.DocumentTypeResolverImpl"/>
         
+  <role name="org.apache.lenya.cms.cocoon.flow.FlowHelper"
+  	    shorthand="flowhelper"
+  	    default-class="org.apache.lenya.cms.cocoon.flow.FlowHelperImpl"/>
+        
 </role-list>

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org