svn commit: r617035 [9/22] - in /lenya/branches/revolution/1.3.x: ./ src/java/org/apache/lenya/ac/ src/java/org/apache/lenya/ac/cache/ src/java/org/apache/lenya/ac/cifs/ src/java/org/apache/lenya/ac/file/ src/java/org/apache/lenya/ac/impl/ src/java/org...

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/NoChildDocumentExistException.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/NoChildDocumentExistException.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/NoChildDocumentExistException.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/NoChildDocumentExistException.java Wed Jan 30 23:44:03 2008
@@ -14,47 +14,44 @@
  *  limitations under the License.
  *
  */
-
 /* $Id: DocumentDoesNotExistException.java 42598 2004-03-01 16:18:28Z gregor $  */
-
 package org.apache.lenya.cms.publication;
-
 public class NoChildDocumentExistException extends DocumentException {
-
-    /**
-     * Creates a new NoChildDocumentExistException
-     * 
-     */
-    public NoChildDocumentExistException() {
-        super();
-    }
-
-    /**
-     * Creates a new NoChildDocumentExistException
-     * 
-     * @param message the exception message
-     */
-    public NoChildDocumentExistException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new NoChildDocumentExistException
-     * 
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public NoChildDocumentExistException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new NoChildDocumentExistException
-     * 
-     * @param cause the cause of the exception
-     */
-    public NoChildDocumentExistException(Throwable cause) {
-        super(cause);
-    }
-
+   private static final long serialVersionUID = 1L;
+   /**
+    * Creates a new NoChildDocumentExistException
+    * 
+    */
+   public NoChildDocumentExistException() {
+      super();
+   }
+   /**
+    * Creates a new NoChildDocumentExistException
+    * 
+    * @param message
+    *           the exception message
+    */
+   public NoChildDocumentExistException(String message) {
+      super(message);
+   }
+   /**
+    * Creates a new NoChildDocumentExistException
+    * 
+    * @param message
+    *           the exception message
+    * @param cause
+    *           the cause of the exception
+    */
+   public NoChildDocumentExistException(String message, Throwable cause) {
+      super(message, cause);
+   }
+   /**
+    * Creates a new NoChildDocumentExistException
+    * 
+    * @param cause
+    *           the cause of the exception
+    */
+   public NoChildDocumentExistException(Throwable cause) {
+      super(cause);
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PageEnvelopeException.java Wed Jan 30 23:44:03 2008
@@ -14,47 +14,45 @@
  *  limitations under the License.
  *
  */
-
 /* $Id$  */
-
 package org.apache.lenya.cms.publication;
-
-
 /**
  * This exception is thrown when the creation of a {@link PageEnvelope} object fails.
  */
 public class PageEnvelopeException extends Exception {
-    /**
-     * Creates a new PageEnvelopeException.
-     */
-    public PageEnvelopeException() {
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * 
-     * @param message the exception message
-     */
-    public PageEnvelopeException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * 
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public PageEnvelopeException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new PageEnvelopeException.
-     * 
-     * @param cause  the cause of the exception
-     */
-    public PageEnvelopeException(Throwable cause) {
-        super(cause);
-    }
+   private static final long serialVersionUID = 1L;
+   /**
+    * Creates a new PageEnvelopeException.
+    */
+   public PageEnvelopeException() {
+   }
+   /**
+    * Creates a new PageEnvelopeException.
+    * 
+    * @param message
+    *           the exception message
+    */
+   public PageEnvelopeException(String message) {
+      super(message);
+   }
+   /**
+    * Creates a new PageEnvelopeException.
+    * 
+    * @param message
+    *           the exception message
+    * @param cause
+    *           the cause of the exception
+    */
+   public PageEnvelopeException(String message, Throwable cause) {
+      super(message, cause);
+   }
+   /**
+    * Creates a new PageEnvelopeException.
+    * 
+    * @param cause
+    *           the cause of the exception
+    */
+   public PageEnvelopeException(Throwable cause) {
+      super(cause);
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationException.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationException.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationException.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationException.java Wed Jan 30 23:44:03 2008
@@ -14,47 +14,44 @@
  *  limitations under the License.
  *
  */
-
 /* $Id$  */
-
 package org.apache.lenya.cms.publication;
-
 public class PublicationException extends Exception {
-
-    /**
-     * Creates a new PublicationException.
-     * 
-     */
-    public PublicationException() {
-        super();
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * 
-     * @param message the exception message
-     */
-    public PublicationException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * 
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public PublicationException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new PublicationException.
-     * 
-     * @param cause the cause of the exception
-     */
-    public PublicationException(Throwable cause) {
-        super(cause);
-    }
-
+   private static final long serialVersionUID = 1L;
+   /**
+    * Creates a new PublicationException.
+    * 
+    */
+   public PublicationException() {
+      super();
+   }
+   /**
+    * Creates a new PublicationException.
+    * 
+    * @param message
+    *           the exception message
+    */
+   public PublicationException(String message) {
+      super(message);
+   }
+   /**
+    * Creates a new PublicationException.
+    * 
+    * @param message
+    *           the exception message
+    * @param cause
+    *           the cause of the exception
+    */
+   public PublicationException(String message, Throwable cause) {
+      super(message, cause);
+   }
+   /**
+    * Creates a new PublicationException.
+    * 
+    * @param cause
+    *           the cause of the exception
+    */
+   public PublicationException(Throwable cause) {
+      super(cause);
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationFactory.java Wed Jan 30 23:44:03 2008
@@ -16,7 +16,6 @@
  */
 /* $Id$  */
 package org.apache.lenya.cms.publication;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
@@ -29,179 +28,172 @@
 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;
-
+import org.apache.log4j.Logger;
 /**
  * Factory for creating publication objects.
  */
 public final class PublicationFactory {
-    private static Category log = Category.getInstance(PublicationFactory.class);
-    /**
-     * Create a new <code>PublicationFactory</code>.
-     */
-    private PublicationFactory() {
-    }
-    private static Map keyToPublication = new HashMap();
-    /**
-     * Creates a new publication. The publication ID is resolved from the
-     * request URI. The servlet context path is resolved from the context
-     * object.
-     * 
-     * @param objectModel
-     *            The object model of the Cocoon component.
-     * 
-     * @return a <code>Publication</code>
-     * 
-     * @throws PublicationException
-     *             if there was a problem creating the publication.
-     */
-    public static Publication getPublication(Map objectModel) throws PublicationException {
-        // assert objectModel != null;
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        Context context = ObjectModelHelper.getContext(objectModel);
-        return getPublication(request, context);
-    }
-    /**
-     * Create a new publication with the given publication-id and servlet
-     * context path. These publications are cached and reused for similar
-     * requests.
-     * 
-     * @param id
-     *            the publication id
-     * @param servletContextPath
-     *            the servlet context path of the publication
-     * 
-     * @return a <code>Publication</code>
-     * 
-     * @throws PublicationException
-     *             if there was a problem creating the publication.
-     */
-    public static Publication getPublication(String id, String servletContextPath) throws PublicationException {
-        // assert id != null;
-        // assert servletContextPath != null;
-        String key = generateKey(id, servletContextPath);
-        Publication publication = null;
-        if (keyToPublication.containsKey(key)) {
-            publication = (Publication) keyToPublication.get(key);
-        } else {
-            if (PublicationFactory.existsPublication(id, servletContextPath)) {
-                publication = new FilePublication(id, servletContextPath);
-                keyToPublication.put(key, publication);
-            }
-        }
-        if (publication == null) {
-            throw new PublicationException("The publication for ID [" + id + "] could not be created.");
-        }
-        return publication;
-    }
-    /**
-     * Generates a key to cache a publication. The cache key is constructed
-     * using the canonical servlet context path and the publication ID.
-     * 
-     * @param publicationId
-     *            The publication ID.
-     * @param servletContextPath
-     *            The servlet context path.
-     * @return A cache key.
-     * @throws PublicationException
-     *             when the servlet context does not exist.
-     */
-    protected static String generateKey(String publicationId, String servletContextPath) throws PublicationException {
-        String key;
-        File servletContext = new File(servletContextPath);
-        String canonicalPath;
-        try {
-            canonicalPath = servletContext.getCanonicalPath();
-        } catch (IOException e) {
-            throw new PublicationException(e);
-        }
-        key = canonicalPath + "_" + publicationId;
-        return key;
-    }
-    /**
-     * Creates a new publication based on a request and a context.
-     * 
-     * @param request
-     *            A request.
-     * @param context
-     *            A context.
-     * 
-     * @return A publication.
-     * 
-     * @throws PublicationException
-     *             if there was a problem creating the publication.
-     */
-    public static Publication getPublication(Request request, Context context) throws PublicationException {
-        log.debug("Creating publication from Cocoon object model");
-        String webappUrl = ServletHelper.getWebappURI(request);
-        String servletContextPath = context.getRealPath("");
-        return getPublication(webappUrl, new File(servletContextPath));
-    }
-    /**
-     * Creates a publication from a webapp URL and a servlet context directory.
-     * 
-     * @param webappUrl
-     *            The URL within the web application (without context prefix)
-     * @param servletContext
-     *            The Lenya servlet context directory
-     * @return A publication
-     * @throws PublicationException
-     *             when something went wrong
-     */
-    public static Publication getPublication(String webappUrl, File servletContext) throws PublicationException {
-        log.debug("Creating publication from webapp URL and servlet context");
-        log.debug("    Webapp URL:       [" + webappUrl + "]");
-        String publicationId = new URLInformation(webappUrl).getPublicationId();
-        Publication publication = getPublication(publicationId, servletContext.getAbsolutePath());
-        return publication;
-    }
-    /**
-     * Checks if a publication with a certain ID exists in a certain context.
-     * 
-     * @param id
-     *            The publication ID.
-     * @param servletContextPath
-     *            The webapp context path.
-     * @return <code>true</code> if the publication exists, <code>false</code>
-     *         otherwise.
-     */
-    public static boolean existsPublication(String id, String servletContextPath) {
-        if (servletContextPath.endsWith("/")) {
-            servletContextPath = servletContextPath.substring(0, servletContextPath.length() - 1);
-        }
-        File publicationDirectory = new File(servletContextPath + File.separator + Publication.PUBLICATION_PREFIX + File.separator + id);
-        boolean exists = true;
-        exists = exists && publicationDirectory.isDirectory();
-        exists = exists && new File(publicationDirectory, Publication.CONFIGURATION_FILE).exists();
-        return exists;
-    }
-    /**
-     * Creates a publication using a source resolver and a request.
-     * 
-     * @param resolver
-     *            The source resolver.
-     * @param request
-     *            The request.
-     * @return A publication.
-     * @throws PublicationException
-     *             when something went wrong.
-     */
-    public static Publication getPublication(SourceResolver resolver, Request request) throws PublicationException {
-        log.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);
-        } catch (Exception e) {
-            throw new PublicationException(e);
-        } finally {
-            if (source != null) {
-                resolver.release(source);
-            }
-        }
-        return publication;
-    }
+   private static Logger log = Logger.getLogger(PublicationFactory.class);
+   /**
+    * Create a new <code>PublicationFactory</code>.
+    */
+   private PublicationFactory() {
+   }
+   private static Map keyToPublication = new HashMap();
+   /**
+    * Creates a new publication. The publication ID is resolved from the request URI. The servlet context path is resolved from the context object.
+    * 
+    * @param objectModel
+    *           The object model of the Cocoon component.
+    * 
+    * @return a <code>Publication</code>
+    * 
+    * @throws PublicationException
+    *            if there was a problem creating the publication.
+    */
+   public static Publication getPublication(Map objectModel) throws PublicationException {
+      // assert objectModel != null;
+      Request request = ObjectModelHelper.getRequest(objectModel);
+      Context context = ObjectModelHelper.getContext(objectModel);
+      return getPublication(request, context);
+   }
+   /**
+    * Create a new publication with the given publication-id and servlet context path. These publications are cached and reused for similar requests.
+    * 
+    * @param id
+    *           the publication id
+    * @param servletContextPath
+    *           the servlet context path of the publication
+    * 
+    * @return a <code>Publication</code>
+    * 
+    * @throws PublicationException
+    *            if there was a problem creating the publication.
+    */
+   public static Publication getPublication(String id, String servletContextPath) throws PublicationException {
+      // assert id != null;
+      // assert servletContextPath != null;
+      String key = generateKey(id, servletContextPath);
+      Publication publication = null;
+      if(keyToPublication.containsKey(key)){
+         publication = (Publication) keyToPublication.get(key);
+      }else{
+         if(PublicationFactory.existsPublication(id, servletContextPath)){
+            publication = new FilePublication(id, servletContextPath);
+            keyToPublication.put(key, publication);
+         }
+      }
+      if(publication == null){
+         throw new PublicationException("The publication for ID [" + id + "] could not be created.");
+      }
+      return publication;
+   }
+   /**
+    * Generates a key to cache a publication. The cache key is constructed using the canonical servlet context path and the publication ID.
+    * 
+    * @param publicationId
+    *           The publication ID.
+    * @param servletContextPath
+    *           The servlet context path.
+    * @return A cache key.
+    * @throws PublicationException
+    *            when the servlet context does not exist.
+    */
+   protected static String generateKey(String publicationId, String servletContextPath) throws PublicationException {
+      String key;
+      File servletContext = new File(servletContextPath);
+      String canonicalPath;
+      try{
+         canonicalPath = servletContext.getCanonicalPath();
+      }catch(IOException e){
+         throw new PublicationException(e);
+      }
+      key = canonicalPath + "_" + publicationId;
+      return key;
+   }
+   /**
+    * Creates a new publication based on a request and a context.
+    * 
+    * @param request
+    *           A request.
+    * @param context
+    *           A context.
+    * 
+    * @return A publication.
+    * 
+    * @throws PublicationException
+    *            if there was a problem creating the publication.
+    */
+   public static Publication getPublication(Request request, Context context) throws PublicationException {
+      log.debug("Creating publication from Cocoon object model");
+      String webappUrl = ServletHelper.getWebappURI(request);
+      String servletContextPath = context.getRealPath("");
+      return getPublication(webappUrl, new File(servletContextPath));
+   }
+   /**
+    * Creates a publication from a webapp URL and a servlet context directory.
+    * 
+    * @param webappUrl
+    *           The URL within the web application (without context prefix)
+    * @param servletContext
+    *           The Lenya servlet context directory
+    * @return A publication
+    * @throws PublicationException
+    *            when something went wrong
+    */
+   public static Publication getPublication(String webappUrl, File servletContext) throws PublicationException {
+      log.debug("Creating publication from webapp URL and servlet context");
+      log.debug("    Webapp URL:       [" + webappUrl + "]");
+      String publicationId = new URLInformation(webappUrl).getPublicationId();
+      Publication publication = getPublication(publicationId, servletContext.getAbsolutePath());
+      return publication;
+   }
+   /**
+    * Checks if a publication with a certain ID exists in a certain context.
+    * 
+    * @param id
+    *           The publication ID.
+    * @param servletContextPath
+    *           The webapp context path.
+    * @return <code>true</code> if the publication exists, <code>false</code> otherwise.
+    */
+   public static boolean existsPublication(String id, String servletContextPath) {
+      if(servletContextPath.endsWith("/")){
+         servletContextPath = servletContextPath.substring(0, servletContextPath.length() - 1);
+      }
+      File publicationDirectory = new File(servletContextPath + File.separator + Publication.PUBLICATION_PREFIX + File.separator + id);
+      boolean exists = true;
+      exists = exists && publicationDirectory.isDirectory();
+      exists = exists && new File(publicationDirectory, Publication.CONFIGURATION_FILE).exists();
+      return exists;
+   }
+   /**
+    * Creates a publication using a source resolver and a request.
+    * 
+    * @param resolver
+    *           The source resolver.
+    * @param request
+    *           The request.
+    * @return A publication.
+    * @throws PublicationException
+    *            when something went wrong.
+    */
+   public static Publication getPublication(SourceResolver resolver, Request request) throws PublicationException {
+      log.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);
+      }catch(Exception e){
+         throw new PublicationException(e);
+      }finally{
+         if(source != null){
+            resolver.release(source);
+         }
+      }
+      return publication;
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationModules.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationModules.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationModules.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/PublicationModules.java Wed Jan 30 23:44:03 2008
@@ -9,8 +9,13 @@
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.lenya.cms.modules.Module;
 import org.apache.lenya.cms.modules.Modules;
-//TODO: Rearchitect so can reset all without restarting Lenya?
+/**
+ * 
+ * @author solprovider
+ * @since 1.3
+ */
 public class PublicationModules {
+   // TODO: Rearchitect class so can reset all without restarting Lenya?
    private List templates = new ArrayList(); // Default list of Publications for inherit.
    // TODO: external and exclude should have defaults in module.xml.
    // Current algorithm needs replacing.
@@ -28,16 +33,17 @@
    // static Map globalvariables = new HashMap(); // module.variable = value from global module.xml
    // static boolean isGlobalvariablesSet = false;
    private String publicationId;
-   private String servletContextPath;
+   // private String servletContextPath;
    private String contentType;
    // Dev testing
    Configuration config;
-   public PublicationModules(String publicationId, String contentType, String servletContextPath, Configuration config) {
+   public PublicationModules(String publicationId, String contentType, Configuration config) {
+      // public PublicationModules(String publicationId, String contentType, String servletContextPath, Configuration config) {
       if(null == config)
          return;
       int i;
       this.publicationId = publicationId;
-      this.servletContextPath = servletContextPath;
+      // this.servletContextPath = servletContextPath;
       this.contentType = contentType;
       this.config = config; // TESTING
       String[] attrnames = config.getAttributeNames();

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/SiteTreeException.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/SiteTreeException.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/SiteTreeException.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/SiteTreeException.java Wed Jan 30 23:44:03 2008
@@ -14,47 +14,45 @@
  *  limitations under the License.
  *
  */
-
 /* $Id$  */
-
 package org.apache.lenya.cms.publication;
-
 /**
  * Exceptions for site tree handling.
  */
 public class SiteTreeException extends Exception {
-	
-    /**
-     * Creates a new SiteTreeException.
-     */
-    public SiteTreeException() {
-    }
-
-    /**
-     * Creates a new SiteTreeException.
-     * 
-     * @param message the exception message
-     */
-    public SiteTreeException(String message) {
-        super(message);
-    }
-
-    /**
-     * Creates a new SiteTreeException.
-     * 
-     * @param message the exception message
-     * @param cause the cause of the exception
-     */
-    public SiteTreeException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Creates a new SiteTreeException.
-     * 
-     * @param cause  the cause of the exception
-     */
-    public SiteTreeException(Throwable cause) {
-        super(cause);
-    }
+   private static final long serialVersionUID = 1L;
+   /**
+    * Creates a new SiteTreeException.
+    */
+   public SiteTreeException() {
+   }
+   /**
+    * Creates a new SiteTreeException.
+    * 
+    * @param message
+    *           the exception message
+    */
+   public SiteTreeException(String message) {
+      super(message);
+   }
+   /**
+    * Creates a new SiteTreeException.
+    * 
+    * @param message
+    *           the exception message
+    * @param cause
+    *           the cause of the exception
+    */
+   public SiteTreeException(String message, Throwable cause) {
+      super(message, cause);
+   }
+   /**
+    * Creates a new SiteTreeException.
+    * 
+    * @param cause
+    *           the cause of the exception
+    */
+   public SiteTreeException(Throwable cause) {
+      super(cause);
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/XlinkCollection.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/XlinkCollection.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/XlinkCollection.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/XlinkCollection.java Wed Jan 30 23:44:03 2008
@@ -14,102 +14,96 @@
  *  limitations under the License.
  *
  */
-
 package org.apache.lenya.cms.publication;
-
 import java.io.IOException;
-
 import javax.xml.parsers.ParserConfigurationException;
-
 import org.apache.lenya.xml.NamespaceHelper;
 import org.apache.lenya.xml.XLink;
-import org.apache.log4j.Category;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
-
 /**
  * Implementation of a Collection. In the collection are xlink inserted.
+ * 
  * @author <a href="mailto:[email protected]">Edith Chevrier </a>
  * @author <a href="mailto:[email protected]">Andreas Hartmann </a>
  * @version $Id$
  */
 public class XlinkCollection extends CollectionImpl {
-
-    private static final Category log = Category.getInstance(XlinkCollection.class);
-
-    /**
-     * Ctor.
-     * @param publication A publication.
-     * @param id The document ID.
-     * @param area The area the document belongs to.
-     * @throws DocumentException when something went wrong.
-     */
-    public XlinkCollection(Publication publication, String id, String area)
-            throws DocumentException {
-        super(publication, id, area);
-    }
-
-    /**
-     * Ctor.
-     * @param publication A publication.
-     * @param id The document ID.
-     * @param area The area the document belongs to.
-     * @param language The language of the document.
-     * @throws DocumentException when something went wrong.
-     */
-    public XlinkCollection(Publication publication, String id, String area, String language)
-            throws DocumentException {
-        super(publication, id, area, language);
-    }
-
-    /**
-     * (non-Javadoc)
-     * @see org.apache.lenya.cms.publication.CollectionImpl#createDocumentElement(org.apache.lenya.cms.publication.Document,
-     *      org.apache.lenya.xml.NamespaceHelper)
-     */
-    protected Element createDocumentElement(Document document, NamespaceHelper helper)
-            throws DocumentException {
-        Element element = super.createDocumentElement(document, helper);
-        String path = getXlinkHref(document);
-        element.setAttributeNS(XLink.XLINK_NAMESPACE, "xlink:" + XLink.ATTRIBUTE_HREF, path);
-        element.setAttributeNS(XLink.XLINK_NAMESPACE, "xlink:" + XLink.ATTRIBUTE_SHOW, "embed");
-        element.normalize();
-        return element;
-    }
-
-    /**
-     * Returns the href attribute string for a certain document.
-     * @param document The document.
-     * @return A string.
-     * @throws DocumentException when something went wrong.
-     */
-    protected String getXlinkHref(Document document) throws DocumentException {
-        String path = null;
-        try {
-            path = document.getFile().getCanonicalPath();
-        } catch (IOException e) {
-            throw new DocumentException("Couldn't found the file path for the document ["
-                    + document + "]", e);
-        }
-        return path;
-    }
-
-    /**
-     * Adds the XLink namespace declaration to the document element.
-     * @see org.apache.lenya.cms.publication.CollectionImpl#getNamespaceHelper()
-     */
-    protected NamespaceHelper getNamespaceHelper() throws DocumentException,
-            ParserConfigurationException, SAXException, IOException {
-
-        NamespaceHelper helper = super.getNamespaceHelper();
-        Element collectionElement = helper.getDocument().getDocumentElement();
-        String namespaceDeclaration = collectionElement.getAttributeNS(
-                    "http://www.w3.org/2000/xmlns/", "xlink");
-        if (namespaceDeclaration == null || !namespaceDeclaration.equals(XLink.XLINK_NAMESPACE)) {
-            collectionElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink",
-                    XLink.XLINK_NAMESPACE);
-        }
-        return helper;
-    }
-
+   /**
+    * Ctor.
+    * 
+    * @param publication
+    *           A publication.
+    * @param id
+    *           The document ID.
+    * @param area
+    *           The area the document belongs to.
+    * @throws DocumentException
+    *            when something went wrong.
+    */
+   public XlinkCollection(Publication publication, String id, String area) throws DocumentException {
+      super(publication, id, area);
+   }
+   /**
+    * Ctor.
+    * 
+    * @param publication
+    *           A publication.
+    * @param id
+    *           The document ID.
+    * @param area
+    *           The area the document belongs to.
+    * @param language
+    *           The language of the document.
+    * @throws DocumentException
+    *            when something went wrong.
+    */
+   public XlinkCollection(Publication publication, String id, String area, String language) throws DocumentException {
+      super(publication, id, area, language);
+   }
+   /**
+    * (non-Javadoc)
+    * 
+    * @see org.apache.lenya.cms.publication.CollectionImpl#createDocumentElement(org.apache.lenya.cms.publication.Document, org.apache.lenya.xml.NamespaceHelper)
+    */
+   protected Element createDocumentElement(Document document, NamespaceHelper helper) throws DocumentException {
+      Element element = super.createDocumentElement(document, helper);
+      String path = getXlinkHref(document);
+      element.setAttributeNS(XLink.XLINK_NAMESPACE, "xlink:" + XLink.ATTRIBUTE_HREF, path);
+      element.setAttributeNS(XLink.XLINK_NAMESPACE, "xlink:" + XLink.ATTRIBUTE_SHOW, "embed");
+      element.normalize();
+      return element;
+   }
+   /**
+    * Returns the href attribute string for a certain document.
+    * 
+    * @param document
+    *           The document.
+    * @return A string.
+    * @throws DocumentException
+    *            when something went wrong.
+    */
+   protected String getXlinkHref(Document document) throws DocumentException {
+      String path = null;
+      try{
+         path = document.getFile().getCanonicalPath();
+      }catch(IOException e){
+         throw new DocumentException("Couldn't found the file path for the document [" + document + "]", e);
+      }
+      return path;
+   }
+   /**
+    * Adds the XLink namespace declaration to the document element.
+    * 
+    * @see org.apache.lenya.cms.publication.CollectionImpl#getNamespaceHelper()
+    */
+   protected NamespaceHelper getNamespaceHelper() throws DocumentException, ParserConfigurationException, SAXException, IOException {
+      NamespaceHelper helper = super.getNamespaceHelper();
+      Element collectionElement = helper.getDocument().getDocumentElement();
+      String namespaceDeclaration = collectionElement.getAttributeNS("http://www.w3.org/2000/xmlns/", "xlink");
+      if(namespaceDeclaration == null || !namespaceDeclaration.equals(XLink.XLINK_NAMESPACE)){
+         collectionElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", XLink.XLINK_NAMESPACE);
+      }
+      return helper;
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java Wed Jan 30 23:44:03 2008
@@ -14,21 +14,18 @@
  *  limitations under the License.
  *
  */
-
 /* $Id$  */
-
 package org.apache.lenya.cms.publication.task;
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-
-import org.apache.commons.io.FileUtils;
 import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.commons.io.FileUtils;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.PublicationException;
 import org.apache.lenya.cms.publication.PublicationFactory;
 import org.apache.lenya.cms.publication.ResourcesManager;
 import org.apache.lenya.cms.rc.FileReservedCheckInException;
@@ -43,322 +40,305 @@
 import org.apache.lenya.workflow.Situation;
 import org.apache.lenya.workflow.SynchronizedWorkflowInstances;
 import org.apache.lenya.workflow.WorkflowException;
-import org.apache.log4j.Category;
-
+import org.apache.log4j.Logger;
 /**
  * Abstract super class for publication-based tasks.
  */
 public abstract class PublicationTask extends AbstractTask {
-
-    private static final Category log = Category.getInstance(PublicationTask.class);
-
-    private Publication publication;
-
-    /**
-     * Returns the publication used by this task.
-     * @return A publication.
-     * @throws ExecutionException when an error occurs.
-     */
-    protected Publication getPublication() throws ExecutionException {
-        if (publication == null) {
-            try {
-                String publicationId = getParameters().getParameter(Task.PARAMETER_PUBLICATION_ID);
-                String servletContextPath =
-                    getParameters().getParameter(Task.PARAMETER_SERVLET_CONTEXT);
-                publication = PublicationFactory.getPublication(publicationId, servletContextPath);
-            } catch (Exception e) {
-                throw new ExecutionException(e);
-            }
-        }
-        return publication;
-    }
-
-    /**
-     * Copies the resources of a document to another document.
-     * @param sourceDocument The source document.
-     * @param destinationDocument The destination document.
-     * @throws PublicationException when something went wrong.
-     * @throws ExecutionException when something went wrong.
-     * @throws IOException when something went wrong.
-     */
-    protected void copyResources(Document sourceDocument, Document destinationDocument)
-        throws ExecutionException {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Copying resources");
-        }
-
-        ResourcesManager sourceManager = new ResourcesManager(sourceDocument);
-        ResourcesManager destinationManager = new ResourcesManager(destinationDocument);
-
-        List resourcesList = new ArrayList(Arrays.asList(sourceManager.getResources()));
-        resourcesList.addAll(Arrays.asList(sourceManager.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 (log.isDebugEnabled()) {
-                log.debug(
-                    "Copy file ["
-                        + resources[i].getAbsolutePath()
-                        + "] to ["
-                        + destinationResource.getAbsolutePath()
-                        + "]");
-            }
-            try {
-                FileUtils.copyFile(resources[i], destinationResource);
-            } catch (IOException e) {
-                throw new ExecutionException(e);
-            }
-        }
-    }
-
-    public static final String PARAMETER_WORKFLOW_EVENT = "workflow-event";
-    public static final String PARAMETER_USER_ID = "user-id";
-    public static final String PARAMETER_IP_ADDRESS = "ip-address";
-    public static final String PARAMETER_ROLE_IDS = "role-ids";
-    public static final String ROLE_SEPARATOR_REGEXP = ",";
-
-    /**
-     * Checks if the workflow event can be invoked on a document.
-     * @param document The document.
-     * @return A boolean value.
-     * @throws ExecutionException when something went wrong.
-     */
-    protected boolean canWorkflowFire(Document document) throws ExecutionException {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Checking workflow of document [" + document + "].");
-        }
-
-        boolean canFire = true;
-
-        WorkflowFactory factory = WorkflowFactory.newInstance();
-        if (factory.hasWorkflow(document)) {
-            try {
-                Situation situation = getSituation();
-
-                SynchronizedWorkflowInstances instance;
-                try {
-                    instance = factory.buildSynchronizedInstance(document);
-                } catch (WorkflowException e) {
-                    throw new ExecutionException(e);
-                }
-                Event event = getExecutableEvent(instance, situation);
-                
-                if (event == null) {
-                    canFire = false;
-                }
-                
-            }
-            catch (Exception e) {
-                throw new ExecutionException(e);
+   private static Logger log = Logger.getLogger(PublicationTask.class);
+   private Publication publication;
+   /**
+    * Returns the publication used by this task.
+    * 
+    * @return A publication.
+    * @throws ExecutionException
+    *            when an error occurs.
+    */
+   protected Publication getPublication() throws ExecutionException {
+      if(publication == null){
+         try{
+            String publicationId = getParameters().getParameter(Task.PARAMETER_PUBLICATION_ID);
+            String servletContextPath = getParameters().getParameter(Task.PARAMETER_SERVLET_CONTEXT);
+            publication = PublicationFactory.getPublication(publicationId, servletContextPath);
+         }catch(Exception e){
+            throw new ExecutionException(e);
+         }
+      }
+      return publication;
+   }
+   /**
+    * Copies the resources of a document to another document.
+    * 
+    * @param sourceDocument
+    *           The source document.
+    * @param destinationDocument
+    *           The destination document.
+    * @throws PublicationException
+    *            when something went wrong.
+    * @throws ExecutionException
+    *            when something went wrong.
+    * @throws IOException
+    *            when something went wrong.
+    */
+   protected void copyResources(Document sourceDocument, Document destinationDocument) throws ExecutionException {
+      if(log.isDebugEnabled()){
+         log.debug("Copying resources");
+      }
+      ResourcesManager sourceManager = new ResourcesManager(sourceDocument);
+      ResourcesManager destinationManager = new ResourcesManager(destinationDocument);
+      List resourcesList = new ArrayList(Arrays.asList(sourceManager.getResources()));
+      resourcesList.addAll(Arrays.asList(sourceManager.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(log.isDebugEnabled()){
+            log.debug("Copy file [" + resources[i].getAbsolutePath() + "] to [" + destinationResource.getAbsolutePath() + "]");
+         }
+         try{
+            FileUtils.copyFile(resources[i], destinationResource);
+         }catch(IOException e){
+            throw new ExecutionException(e);
+         }
+      }
+   }
+   public static final String PARAMETER_WORKFLOW_EVENT = "workflow-event";
+   public static final String PARAMETER_USER_ID = "user-id";
+   public static final String PARAMETER_IP_ADDRESS = "ip-address";
+   public static final String PARAMETER_ROLE_IDS = "role-ids";
+   public static final String ROLE_SEPARATOR_REGEXP = ",";
+   /**
+    * Checks if the workflow event can be invoked on a document.
+    * 
+    * @param document
+    *           The document.
+    * @return A boolean value.
+    * @throws ExecutionException
+    *            when something went wrong.
+    */
+   protected boolean canWorkflowFire(Document document) throws ExecutionException {
+      if(log.isDebugEnabled()){
+         log.debug("Checking workflow of document [" + document + "].");
+      }
+      boolean canFire = true;
+      WorkflowFactory factory = WorkflowFactory.newInstance();
+      if(factory.hasWorkflow(document)){
+         try{
+            Situation situation = getSituation();
+            SynchronizedWorkflowInstances instance;
+            try{
+               instance = factory.buildSynchronizedInstance(document);
+            }catch(WorkflowException e){
+               throw new ExecutionException(e);
             }
-        }
-        return canFire;
-    }
-
-    /**
-     * Returns the workflow situation.
-     * @return A situation.
-     * @throws ParameterException when something went wrong.
-     */
-    protected Situation getSituation() throws ParameterException {
-        WorkflowFactory workflowFactory = WorkflowFactory.newInstance();
-        String userId = getParameters().getParameter(PARAMETER_USER_ID);
-        String machineIp = getParameters().getParameter(PARAMETER_IP_ADDRESS);
-        Situation situation = workflowFactory.buildSituation(getRoleIDs(), userId, machineIp);
-        return situation;
-    }
-
-    /**
-     * Invokes the workflow on a document.
-     * @param document The document.
-     * @throws ParameterException when something went wrong.
-     * @throws WorkflowException when something went wrong.
-     */
-    protected void triggerWorkflow(Document document) throws ExecutionException {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Trying to execute workflow on document [" + document.getId() + "].");
-        }
-
-        WorkflowFactory factory = WorkflowFactory.newInstance();
-        if (factory.hasWorkflow(document)) {
-            try {
-                String userId = getParameters().getParameter(PARAMETER_USER_ID);
-                String machineIp = getParameters().getParameter(PARAMETER_IP_ADDRESS);
-
-                SynchronizedWorkflowInstances instance;
-                try {
-                    instance = factory.buildSynchronizedInstance(document);
-                } catch (WorkflowException e) {
-                    throw new ExecutionException(e);
-                }
-                Situation situation = factory.buildSituation(getRoleIDs(), userId, machineIp);
-
-                Event event = getExecutableEvent(instance, situation);
-
-//                assert event != null;
-
-                if (log.isDebugEnabled()) {
-                    log.debug("Invoking event [" + event.getName() + "]");
-                }
-                instance.invoke(situation, event);
-                if (log.isDebugEnabled()) {
-                    log.debug("Invoking transition completed.");
-                }
-            } catch (Exception e) {
-                throw new ExecutionException(e);
+            Event event = getExecutableEvent(instance, situation);
+            if(event == null){
+               canFire = false;
             }
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("No workflow associated with document.");
+         }catch(Exception e){
+            throw new ExecutionException(e);
+         }
+      }
+      return canFire;
+   }
+   /**
+    * Returns the workflow situation.
+    * 
+    * @return A situation.
+    * @throws ParameterException
+    *            when something went wrong.
+    */
+   protected Situation getSituation() throws ParameterException {
+      WorkflowFactory workflowFactory = WorkflowFactory.newInstance();
+      String userId = getParameters().getParameter(PARAMETER_USER_ID);
+      String machineIp = getParameters().getParameter(PARAMETER_IP_ADDRESS);
+      Situation situation = workflowFactory.buildSituation(getRoleIDs(), userId, machineIp);
+      return situation;
+   }
+   /**
+    * Invokes the workflow on a document.
+    * 
+    * @param document
+    *           The document.
+    * @throws ParameterException
+    *            when something went wrong.
+    * @throws WorkflowException
+    *            when something went wrong.
+    */
+   protected void triggerWorkflow(Document document) throws ExecutionException {
+      if(log.isDebugEnabled()){
+         log.debug("Trying to execute workflow on document [" + document.getId() + "].");
+      }
+      WorkflowFactory factory = WorkflowFactory.newInstance();
+      if(factory.hasWorkflow(document)){
+         try{
+            String userId = getParameters().getParameter(PARAMETER_USER_ID);
+            String machineIp = getParameters().getParameter(PARAMETER_IP_ADDRESS);
+            SynchronizedWorkflowInstances instance;
+            try{
+               instance = factory.buildSynchronizedInstance(document);
+            }catch(WorkflowException e){
+               throw new ExecutionException(e);
             }
-        }
-
-    }
-
-    /**
-     * 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.
-     */
-    protected Event getExecutableEvent(SynchronizedWorkflowInstances instance, Situation situation)
-        throws WorkflowException, ParameterException {
-
-        String workflowEvent = getEventName();
-
-        Event event = null;
-        Event[] events = instance.getExecutableEvents(situation);
-
-        if (log.isDebugEnabled()) {
-            log.debug("Workflow event name: [" + workflowEvent + "]");
-            log.debug("Resolved executable events.");
-        }
-
-        for (int i = 0; i < events.length; i++) {
-            if (events[i].getName().equals(workflowEvent)) {
-                event = events[i];
+            Situation situation = factory.buildSituation(getRoleIDs(), userId, machineIp);
+            Event event = getExecutableEvent(instance, situation);
+            // assert event != null;
+            if(log.isDebugEnabled()){
+               log.debug("Invoking event [" + event.getName() + "]");
             }
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("Executable event found: [" + event + "]");
-        }
-        
-        if (event == null) {
-            log.error("Event [" + workflowEvent + "] cannot be invoked!");
-        }
-
-        return event;
-    }
-
-    /**
-     * Returns the workflow event name.
-     * @return A string.
-     * @throws ParameterException when the parameter does not exist.
-     */
-    protected String getEventName() throws ParameterException {
-        String workflowEvent = getParameters().getParameter(PARAMETER_WORKFLOW_EVENT);
-        return workflowEvent;
-    }
-
-    /**
-     * Returns the role IDs.
-     * @return An array of strings.
-     */
-    protected String[] getRoleIDs() throws ParameterException {
-        String rolesString = getParameters().getParameter(PARAMETER_ROLE_IDS);
-        String[] roles = rolesString.split(ROLE_SEPARATOR_REGEXP);
-        return roles;
-    }
-
-    private RevisionController revisionController;
-
-    /**
-     * Returns the revision controller.
-     * @return A revision controller.
-     * @throws ExecutionException
-     * @throws IOException when something went wrong.
-     */
-    protected RevisionController getRevisionController() throws RevisionControlException, ExecutionException {
-        if (revisionController == null) {
-            File publicationDir = publication.getDirectory();
-            RCEnvironment rcEnvironment;
-            try {
-                File servletContext = publication.getServletContext();
-                rcEnvironment = RCEnvironment.getInstance(servletContext.getCanonicalPath());
-            } catch (IOException e) {
-                throw new RevisionControlException(e);
+            instance.invoke(situation, event);
+            if(log.isDebugEnabled()){
+               log.debug("Invoking transition completed.");
             }
-
-            File rcmlDirectory = new File(publicationDir, rcEnvironment.getRCMLDirectory());
-            File backupDirectory = new File(publicationDir, rcEnvironment.getBackupDirectory());
-
-            revisionController =
-                new RevisionController(
-                    rcmlDirectory.getAbsolutePath(),
-                    backupDirectory.getAbsolutePath(),
-                    publicationDir.getAbsolutePath());
-        }
-        return revisionController;
-    }
-
-    /**
-     * Returns the revision file path of a document.
-     * @param document The document.
-     * @return A string.
-     * @throws IOException when something went wrong.
-     */
-    protected String getRevisionFilePath(Document document) throws IOException {
-        String path = document.getFile().getCanonicalPath()
-        .substring(publication.getDirectory().getCanonicalPath().length());
-        return path;
-    }
-
-
-    /**
-     * Checks if the document can be checked out.
-     * @param document The document
-     * @return A boolean value.
-     * @throws ExecutionException when something went wrong.
-     * @throws IOException when something went wrong.
-     * @throws Exception when something went wrong.
-     */
-    protected boolean canCheckOut(Document document) throws ExecutionException, IOException, Exception{
-        String userId = getParameters().getParameter(PARAMETER_USER_ID);
-        String path = getRevisionFilePath(document);
-        return getRevisionController().canCheckOut(path, userId);
-    }
-    
-    /**Checks in a document and creates a revision, if backup is true.
-     * @param document
-     * @param backup A boolean Value
-     * @throws FileReservedCheckInException when something went wrong.
-     * @throws Exception when something went wrong.
-     */
-    protected void reservedCheckIn(Document document, boolean backup)
-            throws FileReservedCheckInException, Exception {
-        String userId = getParameters().getParameter(PARAMETER_USER_ID);
-        String path = getRevisionFilePath(document);
-        getRevisionController().reservedCheckIn(path, userId, backup);
-    }
-
-    /**
-     * Checks out a document.
-     * @param document The document
-     * @throws IOException when something went wrong. 
-     * @throws Exception when something went wrong.
-     */
-    protected void reservedCheckOut(Document document) throws IOException, Exception {
-        String userId = getParameters().getParameter(PARAMETER_USER_ID);
-        String path = getRevisionFilePath(document);
-        getRevisionController().reservedCheckOut(path, userId);
-    }
+         }catch(Exception e){
+            throw new ExecutionException(e);
+         }
+      }else{
+         if(log.isDebugEnabled()){
+            log.debug("No workflow associated with document.");
+         }
+      }
+   }
+   /**
+    * 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.
+    */
+   protected Event getExecutableEvent(SynchronizedWorkflowInstances instance, Situation situation) throws WorkflowException, ParameterException {
+      String workflowEvent = getEventName();
+      Event event = null;
+      Event[] events = instance.getExecutableEvents(situation);
+      if(log.isDebugEnabled()){
+         log.debug("Workflow event name: [" + workflowEvent + "]");
+         log.debug("Resolved executable events.");
+      }
+      for(int i = 0; i < events.length; i++){
+         if(events[i].getName().equals(workflowEvent)){
+            event = events[i];
+         }
+      }
+      if(log.isDebugEnabled()){
+         log.debug("Executable event found: [" + event + "]");
+      }
+      if(event == null){
+         log.error("Event [" + workflowEvent + "] cannot be invoked!");
+      }
+      return event;
+   }
+   /**
+    * Returns the workflow event name.
+    * 
+    * @return A string.
+    * @throws ParameterException
+    *            when the parameter does not exist.
+    */
+   protected String getEventName() throws ParameterException {
+      String workflowEvent = getParameters().getParameter(PARAMETER_WORKFLOW_EVENT);
+      return workflowEvent;
+   }
+   /**
+    * Returns the role IDs.
+    * 
+    * @return An array of strings.
+    */
+   protected String[] getRoleIDs() throws ParameterException {
+      String rolesString = getParameters().getParameter(PARAMETER_ROLE_IDS);
+      String[] roles = rolesString.split(ROLE_SEPARATOR_REGEXP);
+      return roles;
+   }
+   private RevisionController revisionController;
+   /**
+    * Returns the revision controller.
+    * 
+    * @return A revision controller.
+    * @throws ExecutionException
+    * @throws IOException
+    *            when something went wrong.
+    */
+   protected RevisionController getRevisionController() throws RevisionControlException, ExecutionException {
+      if(revisionController == null){
+         File publicationDir = publication.getDirectory();
+         RCEnvironment rcEnvironment;
+         try{
+            File servletContext = publication.getServletContext();
+            rcEnvironment = RCEnvironment.getInstance(servletContext.getCanonicalPath());
+         }catch(IOException e){
+            throw new RevisionControlException(e);
+         }
+         File rcmlDirectory = new File(publicationDir, rcEnvironment.getRCMLDirectory());
+         File backupDirectory = new File(publicationDir, rcEnvironment.getBackupDirectory());
+         revisionController = new RevisionController(rcmlDirectory.getAbsolutePath(), backupDirectory.getAbsolutePath(), publicationDir.getAbsolutePath());
+      }
+      return revisionController;
+   }
+   /**
+    * Returns the revision file path of a document.
+    * 
+    * @param document
+    *           The document.
+    * @return A string.
+    * @throws IOException
+    *            when something went wrong.
+    */
+   protected String getRevisionFilePath(Document document) throws IOException {
+      String path = document.getFile().getCanonicalPath().substring(publication.getDirectory().getCanonicalPath().length());
+      return path;
+   }
+   /**
+    * Checks if the document can be checked out.
+    * 
+    * @param document
+    *           The document
+    * @return A boolean value.
+    * @throws ExecutionException
+    *            when something went wrong.
+    * @throws IOException
+    *            when something went wrong.
+    * @throws Exception
+    *            when something went wrong.
+    */
+   protected boolean canCheckOut(Document document) throws ExecutionException, IOException, Exception {
+      String userId = getParameters().getParameter(PARAMETER_USER_ID);
+      String path = getRevisionFilePath(document);
+      return getRevisionController().canCheckOut(path, userId);
+   }
+   /**
+    * Checks in a document and creates a revision, if backup is true.
+    * 
+    * @param document
+    * @param backup
+    *           A boolean Value
+    * @throws FileReservedCheckInException
+    *            when something went wrong.
+    * @throws Exception
+    *            when something went wrong.
+    */
+   protected void reservedCheckIn(Document document, boolean backup) throws FileReservedCheckInException, Exception {
+      String userId = getParameters().getParameter(PARAMETER_USER_ID);
+      String path = getRevisionFilePath(document);
+      getRevisionController().reservedCheckIn(path, userId, backup);
+   }
+   /**
+    * Checks out a document.
+    * 
+    * @param document
+    *           The document
+    * @throws IOException
+    *            when something went wrong.
+    * @throws Exception
+    *            when something went wrong.
+    */
+   protected void reservedCheckOut(Document document) throws IOException, Exception {
+      String userId = getParameters().getParameter(PARAMETER_USER_ID);
+      String path = getRevisionFilePath(document);
+      getRevisionController().reservedCheckOut(path, userId);
+   }
 }

Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/util/LinkRewriter.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/util/LinkRewriter.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/util/LinkRewriter.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/publication/util/LinkRewriter.java Wed Jan 30 23:44:03 2008
@@ -15,17 +15,11 @@
  *
  */
 package org.apache.lenya.cms.publication.util;
-
 import java.io.File;
 import java.io.FileFilter;
-import java.io.FilenameFilter;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-
-import javax.xml.parsers.ParserConfigurationException;
-
 import org.apache.commons.io.FilenameUtils;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentBuilder;
@@ -35,160 +29,139 @@
 import org.w3c.dom.Attr;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
 /**
- * Rewrite the links in a publication. This is used after renaming / moving a
- * document.
+ * Rewrite the links in a publication. This is used after renaming / moving a document.
  * 
  * @version $Id:$
  */
 public class LinkRewriter {
-
-    private FileFilter directoryFilter = new FileFilter() {
-
-        public boolean accept(File file) {
-            return file.isDirectory();
-        }
-    };
-
-    private FileFilter xmlFileFilter = new FileFilter() {
-
-        public boolean accept(File file) {
-            return file.isFile() && FilenameUtils.getExtension(file.getName()).equals("xml");
-        }
-    };
-
-    /**
-     * Ctor.
-     */
-    public LinkRewriter() {
-    }
-
-    /**
-     * Rewrites the links to a document and all its descendants, including all
-     * language versions.
-     * @param originalTargetDocument The original target document.
-     * @param newTargetDocument The new target document.
-     * @param contextPath The servlet context path.
-     */
-    public void rewriteLinks(Document originalTargetDocument, Document newTargetDocument,
-            String contextPath) {
-
-        Publication publication = originalTargetDocument.getPublication();
-        String area = originalTargetDocument.getArea();
-        File[] files = getDocumentFiles(publication, area);
-
-        DocumentBuilder builder = publication.getDocumentBuilder();
-
-        try {
-            for (int fileIndex = 0; fileIndex < files.length; fileIndex++) {
-                org.w3c.dom.Document xmlDocument = DocumentHelper.readDocument(files[fileIndex]);
-                boolean linksRewritten = false;
-
-                String[] xPaths = publication.getRewriteAttributeXPaths();
-                for (int xPathIndex = 0; xPathIndex < xPaths.length; xPathIndex++) {
-                    NodeList nodes = XPathAPI.selectNodeList(xmlDocument, xPaths[xPathIndex]);
-                    for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
-                        Node node = nodes.item(nodeIndex);
-                        if (node.getNodeType() != Node.ATTRIBUTE_NODE) {
-                            throw new RuntimeException("The XPath [" + xPaths[xPathIndex]
-                                    + "] may only match attribute nodes!");
+   private FileFilter directoryFilter = new FileFilter() {
+      public boolean accept(File file) {
+         return file.isDirectory();
+      }
+   };
+   private FileFilter xmlFileFilter = new FileFilter() {
+      public boolean accept(File file) {
+         return file.isFile() && FilenameUtils.getExtension(file.getName()).equals("xml");
+      }
+   };
+   /**
+    * Ctor.
+    */
+   public LinkRewriter() {
+   }
+   /**
+    * Rewrites the links to a document and all its descendants, including all language versions.
+    * 
+    * @param originalTargetDocument
+    *           The original target document.
+    * @param newTargetDocument
+    *           The new target document.
+    * @param contextPath
+    *           The servlet context path.
+    */
+   public void rewriteLinks(Document originalTargetDocument, Document newTargetDocument, String contextPath) {
+      Publication publication = originalTargetDocument.getPublication();
+      String area = originalTargetDocument.getArea();
+      File[] files = getDocumentFiles(publication, area);
+      DocumentBuilder builder = publication.getDocumentBuilder();
+      try{
+         for(int fileIndex = 0; fileIndex < files.length; fileIndex++){
+            org.w3c.dom.Document xmlDocument = DocumentHelper.readDocument(files[fileIndex]);
+            boolean linksRewritten = false;
+            String[] xPaths = publication.getRewriteAttributeXPaths();
+            for(int xPathIndex = 0; xPathIndex < xPaths.length; xPathIndex++){
+               NodeList nodes = XPathAPI.selectNodeList(xmlDocument, xPaths[xPathIndex]);
+               for(int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++){
+                  Node node = nodes.item(nodeIndex);
+                  if(node.getNodeType() != Node.ATTRIBUTE_NODE){
+                     throw new RuntimeException("The XPath [" + xPaths[xPathIndex] + "] may only match attribute nodes!");
+                  }
+                  Attr attribute = (Attr) node;
+                  final String url = attribute.getValue();
+                  if(url.startsWith(contextPath + "/" + publication.getId())){
+                     final String webappUrl = url.substring(contextPath.length());
+                     if(builder.isDocument(publication, webappUrl)){
+                        Document targetDocument = builder.buildDocument(publication, webappUrl);
+                        if(matches(targetDocument, originalTargetDocument)){
+                           String newTargetUrl = getNewTargetURL(targetDocument, originalTargetDocument, newTargetDocument);
+                           attribute.setValue(contextPath + newTargetUrl);
+                           linksRewritten = true;
                         }
-                        Attr attribute = (Attr) node;
-                        final String url = attribute.getValue();
-
-                        if (url.startsWith(contextPath + "/" + publication.getId())) {
-                            final String webappUrl = url.substring(contextPath.length());
-                            
-                            if (builder.isDocument(publication, webappUrl)) {
-                                Document targetDocument = builder.buildDocument(publication, webappUrl);
-
-                                if (matches(targetDocument, originalTargetDocument)) {
-                                    String newTargetUrl = getNewTargetURL(targetDocument,
-                                            originalTargetDocument,
-                                            newTargetDocument);
-                                    attribute.setValue(contextPath + newTargetUrl);
-                                    linksRewritten = true;
-                                }
-                            }
-                        }
-                    }
-                }
-
-                if (linksRewritten) {
-                    DocumentHelper.writeDocument(xmlDocument, files[fileIndex]);
-                }
+                     }
+                  }
+               }
+            }
+            if(linksRewritten){
+               DocumentHelper.writeDocument(xmlDocument, files[fileIndex]);
             }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Checks if targetDocument refers to originalTargetDocument, to one of its
-     * language versions, to one of its descendants, or to a language version of
-     * one of the descendants.
-     * @param targetDocument The target document.
-     * @param originalTargetDocument The original target document.
-     * @return A boolean value.
-     */
-    protected boolean matches(Document targetDocument, Document originalTargetDocument) {
-        String matchString = originalTargetDocument.getId() + "/";
-        String testString = targetDocument.getId() + "/";
-        return testString.startsWith(matchString);
-    }
-
-    /**
-     * Rewrites a document.
-     * @param targetDocument The target document to rewrite.
-     * @param originalTargetDocument The original target document.
-     * @param newTargetDocument The new target document.
-     * @return A string.
-     */
-    protected String getNewTargetURL(Document targetDocument, Document originalTargetDocument,
-            Document newTargetDocument) {
-        String originalId = originalTargetDocument.getId();
-        String targetId = targetDocument.getId();
-        String childString = targetId.substring(originalId.length());
-
-        DocumentBuilder builder = targetDocument.getPublication().getDocumentBuilder();
-        String newTargetUrl = builder.buildCanonicalUrl(newTargetDocument.getPublication(),
-                newTargetDocument.getArea(),
-                newTargetDocument.getId() + childString,
-                targetDocument.getLanguage());
-
-        return newTargetUrl;
-    }
-
-    /**
-     * Returns all XML files in a specific area.
-     * @param publication The publication.
-     * @param area The area.
-     * @return An array of files.
-     */
-    protected File[] getDocumentFiles(Publication publication, String area) {
-        File directory = publication.getContentDirectory(area);
-        List files = getDocumentFiles(directory);
-        return (File[]) files.toArray(new File[files.size()]);
-    }
-
-    /**
-     * Returns all XML files in a specific directory.
-     * @param directory The directory.
-     * @return A list of files.
-     */
-    protected List getDocumentFiles(File directory) {
-
-        List list = new ArrayList();
-
-        File[] directories = directory.listFiles(directoryFilter);
-        for (int i = 0; i < directories.length; i++) {
-            list.addAll(getDocumentFiles(directories[i]));
-        }
-        File[] xmlFiles = directory.listFiles(xmlFileFilter);
-        list.addAll(Arrays.asList(xmlFiles));
-        return list;
-    }
-
+         }
+      }catch(Exception e){
+         throw new RuntimeException(e);
+      }
+   }
+   /**
+    * Checks if targetDocument refers to originalTargetDocument, to one of its language versions, to one of its descendants, or to a language version of one of the descendants.
+    * 
+    * @param targetDocument
+    *           The target document.
+    * @param originalTargetDocument
+    *           The original target document.
+    * @return A boolean value.
+    */
+   protected boolean matches(Document targetDocument, Document originalTargetDocument) {
+      String matchString = originalTargetDocument.getId() + "/";
+      String testString = targetDocument.getId() + "/";
+      return testString.startsWith(matchString);
+   }
+   /**
+    * Rewrites a document.
+    * 
+    * @param targetDocument
+    *           The target document to rewrite.
+    * @param originalTargetDocument
+    *           The original target document.
+    * @param newTargetDocument
+    *           The new target document.
+    * @return A string.
+    */
+   protected String getNewTargetURL(Document targetDocument, Document originalTargetDocument, Document newTargetDocument) {
+      String originalId = originalTargetDocument.getId();
+      String targetId = targetDocument.getId();
+      String childString = targetId.substring(originalId.length());
+      DocumentBuilder builder = targetDocument.getPublication().getDocumentBuilder();
+      String newTargetUrl = builder.buildCanonicalUrl(newTargetDocument.getPublication(), newTargetDocument.getArea(), newTargetDocument.getId() + childString, targetDocument.getLanguage());
+      return newTargetUrl;
+   }
+   /**
+    * Returns all XML files in a specific area.
+    * 
+    * @param publication
+    *           The publication.
+    * @param area
+    *           The area.
+    * @return An array of files.
+    */
+   protected File[] getDocumentFiles(Publication publication, String area) {
+      File directory = publication.getContentDirectory(area);
+      List files = getDocumentFiles(directory);
+      return (File[]) files.toArray(new File[files.size()]);
+   }
+   /**
+    * Returns all XML files in a specific directory.
+    * 
+    * @param directory
+    *           The directory.
+    * @return A list of files.
+    */
+   protected List getDocumentFiles(File directory) {
+      List list = new ArrayList();
+      File[] directories = directory.listFiles(directoryFilter);
+      for(int i = 0; i < directories.length; i++){
+         list.addAll(getDocumentFiles(directories[i]));
+      }
+      File[] xmlFiles = directory.listFiles(xmlFileFilter);
+      list.addAll(Arrays.asList(xmlFiles));
+      return list;
+   }
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.