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 2009/02/06 18:55:33 UTC

svn commit: r741654 [3/9] - in /lenya/trunk: org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/ org...

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java Fri Feb  6 17:55:28 2009
@@ -24,7 +24,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -34,7 +33,8 @@
 import org.apache.lenya.cms.publication.DocumentLocator;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.util.ServletHelper;
@@ -45,30 +45,28 @@
 public class DocumentLanguagesHelper {
 
     private DocumentFactory factory;
-    private ServiceManager manager;
     private Publication pub;
     private String url;
     private String contextPath;
+    
+    private RepositoryManager repositoryManager;
 
     /**
      * Create a new DocumentlanguageHelper.
      * @param objectModel the objectModel
-     * @param manager The service manager.
      * @throws ProcessingException if the page envelope could not be created.
      */
-    public DocumentLanguagesHelper(Map objectModel, ServiceManager manager)
+    public DocumentLanguagesHelper(Map objectModel)
             throws ProcessingException {
 
-        this.manager = manager;
         Request request = ObjectModelHelper.getRequest(objectModel);
         this.url = ServletHelper.getWebappURI(request);
         this.contextPath = request.getContextPath();
 
         try {
-            Session session = RepositoryUtil.getSession(manager, request);
-            this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
-
-            this.pub = PublicationUtil.getPublication(manager, objectModel);
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+            this.factory = DocumentUtil.createDocumentFactory(session);
+            this.pub = this.factory.getPublication(new URLInformation(this.url).getPublicationId());
         } catch (Exception e) {
             throw new ProcessingException(e);
         }
@@ -144,4 +142,12 @@
         DocumentLocator locator = this.pub.getDocumentBuilder().getLocator(this.factory, this.url);
         return locator;
     }
+
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java Fri Feb  6 17:55:28 2009
@@ -20,8 +20,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
 import org.apache.lenya.ac.Identity;
 
 /**
@@ -31,7 +29,7 @@
 
     /**
      * Returns the session attached to the request or creates a session.
-     * @param manager The service manager.
+     * @param repoManager The repository manager.
      * @param request The request.
      * @return A session.
      * @throws RepositoryException if an error occurs.
@@ -53,78 +51,17 @@
         return session;
     }
 
-    /**
-     * Returns the session attached to the request or creates a session.
-     * @param manager The service manager.
-     * @param request The request.
-     * @return A session.
-     * @throws RepositoryException if an error occurs.
-     * @deprecated
-     */
-    public static Session getSession(ServiceManager manager, Request request)
-            throws RepositoryException {
-        Session session = (Session) request.getAttribute(Session.class.getName());
-        if (session == null) {
-            Identity identity = getIdentity(request);
-            // attach a read-only repository session to the HTTP request
-            session = createSession(manager, identity, false);
-            request.setAttribute(Session.class.getName(), session);
-        } else if (session.getIdentity() == null) {
-            Identity identity = getIdentity(request);
-            if (identity != null) {
-                session.setIdentity(identity);
-            }
-        }
-        return session;
-    }
-
     protected static Identity getIdentity(HttpServletRequest request) {
         HttpSession session = request.getSession();
         return (Identity) session.getAttribute(Identity.class.getName());
     }
 
-    protected static Identity getIdentity(Request request) {
-        HttpSession cocoonSession = request.getSession();
-        return (Identity) cocoonSession.getAttribute(Identity.class.getName());
-    }
-
-    /**
-     * Creates a session.
-     * @param manager The service manager.
-     * @param identity The identity.
-     * @param modifiable Determines if the repository items in this session should be modifiable.
-     * @return a session.
-     * @throws RepositoryException if an error occurs.
-     * @deprecated
-     */
-    public static Session createSession(ServiceManager manager, Identity identity, boolean modifiable)
-            throws RepositoryException {
-        RepositoryManager repoMgr = null;
-        Session session;
-        try {
-            repoMgr = (RepositoryManager) manager.lookup(RepositoryManager.ROLE);
-            session = repoMgr.createSession(identity, modifiable);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        } finally {
-            manager.release(repoMgr);
-        }
-        return session;
-    }
-
     /**
      * Removes the repository session from the servlet session.
-     * @param manager The service manager.
      * @param request The current request.
      */
-    public static void removeSession(ServiceManager manager, Request request) {
+    public static void removeSession(HttpServletRequest request) {
         request.removeAttribute(Session.class.getName());
-        /*
-        org.apache.cocoon.environment.Session session = request.getSession(false);
-        if (session != null) {
-            session.removeAttribute(Session.class.getName());
-        }
-        */
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java Fri Feb  6 17:55:28 2009
@@ -21,9 +21,6 @@
 import java.util.Arrays;
 import java.util.Comparator;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.lenya.cms.publication.DocumentFactory;
 
@@ -32,23 +29,7 @@
  * 
  * @version $Id$
  */
-public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager, Serviceable {
-
-    protected ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-    
-    /**
-     * Ctor.
-     * @param manager The service manager.
-     */
-    public AbstractSiteManager() {
-    }
+public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager {
 
     /**
      * @see org.apache.lenya.cms.site.SiteManager#sortAscending(org.apache.lenya.cms.publication.util.DocumentSet)
@@ -57,7 +38,7 @@
         if (nodes.length > 0) {
 
             DocumentFactory map = nodes[0].getStructure().getPublication().getFactory();
-            if (!check(map, new NodeSet(this.manager, nodes))) {
+            if (!check(map, new NodeSet(nodes))) {
                 throw new SiteException("The dependence relation is not a strict partial order!");
             }
 

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java Fri Feb  6 17:55:28 2009
@@ -20,8 +20,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentLocator;
@@ -50,8 +48,8 @@
         SiteNode[] subsite;
         try {
             String hint = node.getStructure().getPublication().getSiteManagerHint();
-            siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
-                    SiteManager.class.getName() + "/" + hint);
+            siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext()
+                    .getBean(SiteManager.class.getName() + "/" + hint);
 
             DocumentFactory map = node.getStructure().getPublication().getFactory();
             Set nodes = new HashSet();
@@ -72,30 +70,21 @@
     /**
      * @see org.apache.lenya.cms.site.SiteManager#getAvailableLocator(DocumentFactory,
      *      DocumentLocator)
-     * @param manager The service manager.
      * @param factory The factory.
      * @param locator The locator.
      * @return A document.
      * @throws SiteException if an error occurs.
      */
-    public static DocumentLocator getAvailableLocator(ServiceManager manager,
-            DocumentFactory factory, DocumentLocator locator) throws SiteException {
-        ServiceSelector selector = null;
+    public static DocumentLocator getAvailableLocator(DocumentFactory factory,
+            DocumentLocator locator) throws SiteException {
         SiteManager siteManager = null;
         try {
-            selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
             Publication pub = factory.getPublication(locator.getPublicationId());
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
+            siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext()
+                    .getBean(SiteManager.ROLE + "/" + pub.getSiteManagerHint());
             return siteManager.getAvailableLocator(factory, locator);
         } catch (Exception e) {
             throw new SiteException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                manager.release(selector);
-            }
         }
     }
 

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java Fri Feb  6 17:55:28 2009
@@ -27,7 +27,6 @@
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.ac.Identity;
@@ -55,26 +54,16 @@
      * @param document The document.
      * @param logger The logger.
      */
-    public DocumentWorkflowable(ServiceManager manager, Document document, Log logger) {
+    public DocumentWorkflowable(Document document, Log logger) {
         if (session.getIdentity() == null) {
             throw new IllegalArgumentException("The session must have an identity.");
         }
         this.document = document;
         this.session = session;
-        this.manager = manager;
     }
 
     private Session session;
 
-    private ServiceManager manager;
-
-    /**
-     * @return The service manager.
-     */
-    public ServiceManager getServiceManager() {
-        return this.manager;
-    }
-
     /**
      * @return The repository session.
      */
@@ -184,7 +173,7 @@
         addToMetaData(string);
 
         WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
-        RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, getDocument(),
+        RepositoryEvent event = RepositoryEventFactory.createEvent(getDocument(),
                 getLogger(), descriptor);
         getDocument().getRepositoryNode().getSession().enqueueEvent(event);
     }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java Fri Feb  6 17:55:28 2009
@@ -24,8 +24,7 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.lenya.ac.AccessController;
 import org.apache.lenya.ac.AccessControllerResolver;
 import org.apache.lenya.ac.AccreditableManager;
@@ -60,6 +59,13 @@
         }
     }
 
+    protected AccessControllerResolver getAccessControllerResolver() {
+        return (AccessControllerResolver) WebAppContextUtils.getCurrentWebApplicationContext()
+                .getBean(
+                        AccessControllerResolver.ROLE + "/"
+                                + AccessControllerResolver.DEFAULT_RESOLVER);
+    }
+
     /**
      * Returns if the condition is complied in a certain situation. The condition is complied when
      * the current user has the role that is required by the RoleCondition.
@@ -69,17 +75,11 @@
     public boolean isComplied(Workflow workflow, Workflowable instance) {
 
         DocumentWorkflowable workflowable = (DocumentWorkflowable) instance;
-        ServiceManager manager = workflowable.getServiceManager();
         String url = workflowable.getDocument().getCanonicalWebappURL();
 
-        ServiceSelector selector = null;
-        AccessControllerResolver acResolver = null;
+        AccessControllerResolver acResolver = getAccessControllerResolver();
         AccessController accessController = null;
         try {
-
-            selector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
-            acResolver = (AccessControllerResolver) selector
-                    .select(AccessControllerResolver.DEFAULT_RESOLVER);
             accessController = acResolver.resolveAccessController(url);
 
             PolicyManager policyManager = accessController.getPolicyManager();
@@ -107,14 +107,8 @@
         } catch (final Exception e) {
             throw new RuntimeException(e);
         } finally {
-            if (selector != null) {
-                if (acResolver != null) {
-                    if (accessController != null) {
-                        acResolver.release(accessController);
-                    }
-                    selector.release(acResolver);
-                }
-                manager.release(selector);
+            if (accessController != null) {
+                acResolver.release(accessController);
             }
         }
 

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java Fri Feb  6 17:55:28 2009
@@ -17,8 +17,7 @@
  */
 package org.apache.lenya.cms.workflow;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.util.DocumentSet;
@@ -38,32 +37,20 @@
     /**
      * Invokes a workflow event on a document. This is the same as
      * <code>invoke(Document, String, true)</code>.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param document The document.
      * @param event The name of the event.
      * @throws WorkflowException if the event could not be invoked in the current situation.
      */
-    public static void invoke(ServiceManager manager, Log logger, Document document, String event)
-            throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, logger, document);
-            wfManager.invoke(workflowable, event);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
+    public static void invoke(Log logger, Document document, String event) throws WorkflowException {
+        WorkflowManager wfManager = getWorkflowManager();
+        Workflowable workflowable = getWorkflowable(logger, document);
+        wfManager.invoke(workflowable, event);
 
     }
 
     /**
      * Invokes a workflow event on a document.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param document The document.
      * @param event The name of the event.
@@ -72,26 +59,15 @@
      *            set to <code>false</code>, non-supporting documents are ignored.
      * @throws WorkflowException if the event could not be invoked in the current situation.
      */
-    public static void invoke(ServiceManager manager, Log logger, Document document, String event,
-            boolean force) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, logger, document);
-            wfManager.invoke(workflowable, event, force);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
+    public static void invoke(Log logger, Document document, String event, boolean force)
+            throws WorkflowException {
+        WorkflowManager wfManager = getWorkflowManager();
+        Workflowable workflowable = getWorkflowable(logger, document);
+        wfManager.invoke(workflowable, event, force);
     }
 
     /**
      * Invokes a workflow event on a document set.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param documentSet The document.
      * @param event The event.
@@ -101,57 +77,37 @@
      * @throws WorkflowException if <code>force</code> is set to <code>true</code> and a document
      *             does not support the workflow event.
      */
-    public static void invoke(ServiceManager manager, Log logger, DocumentSet documentSet,
-            String event, boolean force) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
-            Document[] documents = documentSet.getDocuments();
-            for (int i = 0; i < documents.length; i++) {
-                Workflowable workflowable = new DocumentWorkflowable(manager, documents[i], logger);
-                wfManager.invoke(workflowable, event, force);
-            }
-
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
+    public static void invoke(Log logger, DocumentSet documentSet, String event, boolean force)
+            throws WorkflowException {
+        WorkflowManager wfManager = getWorkflowManager();
+        Document[] documents = documentSet.getDocuments();
+        for (int i = 0; i < documents.length; i++) {
+            Workflowable workflowable = new DocumentWorkflowable(documents[i], logger);
+            wfManager.invoke(workflowable, event, force);
         }
+    }
 
+    protected static WorkflowManager getWorkflowManager() {
+        return (WorkflowManager) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
+                WorkflowManager.ROLE);
     }
 
     /**
      * Checks if an event can be invoked on a document.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param document The document.
      * @param event The event.
      * @return A boolean value.
      * @throws WorkflowException
      */
-    public static boolean canInvoke(ServiceManager manager, Log logger, Document document,
-            String event) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
-            return wfManager.canInvoke(workflowable, event);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
-
+    public static boolean canInvoke(Log logger, Document document, String event)
+            throws WorkflowException {
+        Workflowable workflowable = new DocumentWorkflowable(document, logger);
+        return getWorkflowManager().canInvoke(workflowable, event);
     }
 
     /**
      * Checks if an event can be invoked on all documents in a set.
-     * @param manager The service manager.
      * @param session The repository session.
      * @param logger The logger.
      * @param documents The documents.
@@ -159,93 +115,57 @@
      * @return if an error occurs.
      * @throws WorkflowException
      */
-    public static boolean canInvoke(ServiceManager manager, Session session, Log logger,
-            DocumentSet documents, String event) throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
-            boolean canInvoke = true;
-            Document[] documentArray = documents.getDocuments();
-            for (int i = 0; i < documentArray.length; i++) {
-                Workflowable workflowable = new DocumentWorkflowable(manager, documentArray[i],
-                        logger);
-                canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
-            }
-            return canInvoke;
-
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
+    public static boolean canInvoke(Session session, Log logger, DocumentSet documents, String event)
+            throws WorkflowException {
+        WorkflowManager wfManager = getWorkflowManager();
+
+        boolean canInvoke = true;
+        Document[] documentArray = documents.getDocuments();
+        for (int i = 0; i < documentArray.length; i++) {
+            Workflowable workflowable = new DocumentWorkflowable(documentArray[i], logger);
+            canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
         }
+        return canInvoke;
     }
 
     /**
      * Returns if a document has a workflow.
-     * @param manager The service manager.
-     * @param session The repository session.
      * @param logger The logger.
      * @param document The document.
      * @return A boolean value.
      * @throws WorkflowException if an error occurs.
      */
-    public static boolean hasWorkflow(ServiceManager manager, Log logger, Document document)
-            throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
-            return wfManager.hasWorkflow(workflowable);
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
-        }
+    public static boolean hasWorkflow(Log logger, Document document) throws WorkflowException {
+        Workflowable workflowable = new DocumentWorkflowable(document, logger);
+        return getWorkflowManager().hasWorkflow(workflowable);
     }
 
     /**
      * Returns the workflow schema of a document.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param document The document.
      * @return A workflow schema.
      * @throws WorkflowException if an error occurs.
      */
-    public static Workflow getWorkflowSchema(ServiceManager manager, Log logger, Document document)
+    public static Workflow getWorkflowSchema(Log logger, Document document)
             throws WorkflowException {
-        WorkflowManager wfManager = null;
-        try {
-            wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-            Workflowable workflowable = getWorkflowable(manager, logger, document);
-            if (wfManager.hasWorkflow(workflowable)) {
-                return wfManager.getWorkflowSchema(workflowable);
-            } else {
-                throw new WorkflowException("The document [" + document + "] has no workflow!");
-            }
-        } catch (ServiceException e) {
-            throw new WorkflowException(e);
-        } finally {
-            if (wfManager != null) {
-                manager.release(wfManager);
-            }
+        WorkflowManager wfManager = getWorkflowManager();
+        Workflowable workflowable = getWorkflowable(logger, document);
+        if (wfManager.hasWorkflow(workflowable)) {
+            return wfManager.getWorkflowSchema(workflowable);
+        } else {
+            throw new WorkflowException("The document [" + document + "] has no workflow!");
         }
     }
 
     /**
      * Returns a workflowable for a document.
-     * @param manager The service manager.
      * @param logger The logger.
      * @param document The document.
      * @return A workflowable.
      */
-    public static Workflowable getWorkflowable(ServiceManager manager, Log logger, Document document) {
-        Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
-        return workflowable;
+    public static Workflowable getWorkflowable(Log logger, Document document) {
+        return new DocumentWorkflowable(document, logger);
     }
 
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java Fri Feb  6 17:55:28 2009
@@ -29,10 +29,10 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.xpath.XPathAPI;
 import org.w3c.dom.Document;
@@ -118,18 +118,18 @@
 
     /**
      * Returns the value of enable-uploads in web.xml
-     * @param manager The Service Manager.
      * @return true if enable upload is true or not set in web.xml, else false
      */
-    public static synchronized boolean isUploadEnabled(ServiceManager manager)
-            throws SourceNotFoundException, ServiceException, ParserConfigurationException,
-            SAXException, IOException, TransformerException {
+    public static synchronized boolean isUploadEnabled() throws SourceNotFoundException,
+            ParserConfigurationException, SAXException, IOException, TransformerException {
 
         if (ServletHelper.uploadEnabled == null) {
 
             Node node;
             String webappUrl = "context://WEB-INF/web.xml";
-            Document document = SourceUtil.readDOM(webappUrl, manager);
+            SourceResolver resolver = (SourceResolver) WebAppContextUtils
+                    .getCurrentWebApplicationContext().getBean(SourceResolver.ROLE);
+            Document document = SourceUtil.readDOM(webappUrl, resolver);
             Element root = document.getDocumentElement();
             node = XPathAPI.selectSingleNode(root,
                     "/web-app/servlet/init-param[param-name='enable-uploads']/param-value/text()");

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java Fri Feb  6 17:55:28 2009
@@ -24,6 +24,7 @@
 
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.components.validation.Validator;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.xml.dom.DOMStreamer;
 import org.apache.lenya.cms.publication.Document;
 import org.xml.sax.ContentHandler;
@@ -35,66 +36,49 @@
 public class ValidationUtil {
 
     /**
-     * @param manager The service manager.
      * @param document The document to validate.
      * @param handler The SAX error handler.
      * @throws Exception if an error occurs.
      */
-    public static void validate(ServiceManager manager, Document document, ErrorHandler handler)
-            throws Exception {
-
+    public static void validate(Document document, ErrorHandler handler) throws Exception {
         org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(document.getInputStream());
-        validate(manager, xmlDoc, document.getResourceType().getSchema(), handler);
+        validate(xmlDoc, document.getResourceType().getSchema(), handler);
 
     }
 
     /**
-     * @param manager The service manager.
      * @param xmlDoc The XML document.
      * @param schema The schema to use.
      * @param handler The SAX error handler.
      * @throws Exception if an error occurs.
      */
-    public static void validate(ServiceManager manager, org.w3c.dom.Document xmlDoc, Schema schema,
-            ErrorHandler handler) throws Exception {
-        Validator validator = null;
-        try {
-            validator = (Validator) manager.lookup(Validator.ROLE);
-            ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(),
-                    handler);
-            new DOMStreamer(validatorHandler).stream(xmlDoc);
-        } finally {
-            if (validator != null) {
-                manager.release(validator);
-            }
-        }
+    public static void validate(org.w3c.dom.Document xmlDoc, Schema schema, ErrorHandler handler)
+            throws Exception {
+        Validator validator = getValidator();
+        ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(), handler);
+        new DOMStreamer(validatorHandler).stream(xmlDoc);
+    }
+
+    protected static Validator getValidator() {
+        Validator validator = (Validator) WebAppContextUtils.getCurrentWebApplicationContext()
+                .getBean(Validator.ROLE);
+        return validator;
     }
 
     /**
-     * @param manager The service manager.
      * @param source The source to validate.
      * @param schema The schema to use.
      * @param handler The SAX error handler.
      * @throws Exception if an error occurs.
      */
-    public static void validate(ServiceManager manager, Source source, Schema schema,
-            ErrorHandler handler) throws Exception {
+    public static void validate(Source source, Schema schema, ErrorHandler handler)
+            throws Exception {
+        Validator validator = getValidator();
+        ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(), handler);
 
-        Validator validator = null;
-        try {
-            validator = (Validator) manager.lookup(Validator.ROLE);
-            ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(),
-                    handler);
-
-            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-            SAXResult result = new SAXResult(validatorHandler);
-            transformer.transform(source, result);
-
-        } finally {
-            if (validator != null) {
-                manager.release(validator);
-            }
-        }
+        Transformer transformer = TransformerFactory.newInstance().newTransformer();
+        SAXResult result = new SAXResult(validatorHandler);
+        transformer.transform(source, result);
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java Fri Feb  6 17:55:28 2009
@@ -21,24 +21,19 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.util.AbstractLogEnabled;
 
 /**
  * Avalon-based element set.
  */
-public class ConfigurableElementSet extends AbstractLogEnabled implements ElementSet, Configurable,
-        ThreadSafe, Initializable, Serviceable {
+public class ConfigurableElementSet extends AbstractLogEnabled implements ElementSet, Configurable {
 
     private String namespaceUri;
     private Map elements = new HashMap();
+    private MetaDataRegistry registry;
 
     public void configure(Configuration config) throws ConfigurationException {
 
@@ -55,15 +50,13 @@
             int action;
             if (actionOnCopy.equalsIgnoreCase("copy")) {
                 action = Element.ONCOPY_COPY;
-            }
-            else if (actionOnCopy.equalsIgnoreCase("ignore")) {
+            } else if (actionOnCopy.equalsIgnoreCase("ignore")) {
                 action = Element.ONCOPY_IGNORE;
-            }
-            else if (actionOnCopy.equalsIgnoreCase("delete")) {
+            } else if (actionOnCopy.equalsIgnoreCase("delete")) {
                 action = Element.ONCOPY_DELETE;
-            }
-            else {
-                throw new ConfigurationException("The action [" + actionOnCopy + "] is not supported.");
+            } else {
+                throw new ConfigurationException("The action [" + actionOnCopy
+                        + "] is not supported.");
             }
             try {
                 element.setActionOnCopy(action);
@@ -92,23 +85,9 @@
         return this.elements.keySet().contains(name);
     }
 
-    public void initialize() throws Exception {
-        MetaDataRegistry registry = null;
-        try {
-            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
-            registry.register(getNamespaceUri(), this);
-        }
-        finally {
-            if (registry != null) {
-                this.manager.release(registry);
-            }
-        }
-    }
-    
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
+    public void setRegistry(MetaDataRegistry registry) throws MetaDataException {
+        this.registry = registry;
+        registry.register(getNamespaceUri(), this);
     }
 
 }

Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java?rev=741654&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java Fri Feb  6 17:55:28 2009
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.
+ *
+ */
+package org.apache.lenya.cms.publication;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.springframework.util.Assert;
+
+public class RepositoryImpl implements Repository {
+
+    private RepositoryManager repositoryManager;
+
+    public Session getSession(HttpServletRequest request) {
+        Assert.notNull(request, "request");
+        try {
+            org.apache.lenya.cms.repository.Session repoSession = RepositoryUtil.getSession(
+                    this.repositoryManager, request);
+        } catch (RepositoryException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+}

Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java Fri Feb  6 17:55:28 2009
@@ -17,25 +17,20 @@
  */
 package org.apache.lenya.cms.publication;
 
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.cocoon.core.container.spring.avalon.AvalonServiceSelector;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 
 /**
  * Specifies selector for resource types.
  */
-public class ResourceTypeSelector extends AvalonServiceSelector {
+public class ResourceTypeSelector {
 
-    public ResourceTypeSelector(String r) {
-        super(r);
-    }
-
-    public Component select(Object hint) throws ServiceException {
-        ResourceType type = (ResourceType) super.select(hint);
+    public ResourceType getResourceType(String name) {
+        ResourceType type = (ResourceType) WebAppContextUtils.getCurrentWebApplicationContext()
+                .getBean(ResourceType.ROLE + "/" + name);
         if (type != null) {
-            type.setName((String) hint);
+            type.setName(name);
         }
-        return (Component) type;
+        return type;
     }
 
 }

Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java?rev=741654&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java Fri Feb  6 17:55:28 2009
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.
+ *
+ */
+package org.apache.lenya.cms.publication;
+
+import org.springframework.util.Assert;
+
+public class SessionImpl implements Session {
+
+    public SessionImpl(RepositoryImpl repository,
+            org.apache.lenya.cms.repository.Session repoSession) {
+        Assert.notNull(repository, "repository");
+        Assert.notNull(repoSession, "repository session");
+        this.repository = repository;
+        this.repositorySession = repoSession;
+    }
+
+    private RepositoryImpl repository;
+    private org.apache.lenya.cms.repository.Session repositorySession;
+    private DocumentFactory documentFactory;
+
+    public Publication getPublication(String id) {
+        try {
+            return getDocumentFactory().getPublication(id);
+        } catch (PublicationException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public Repository getRepository() {
+        return this.repository;
+    }
+
+    public DocumentFactory getDocumentFactory() {
+        if (this.documentFactory == null) {
+            this.documentFactory = DocumentUtil.createDocumentFactory(this.repositorySession);
+        }
+        return this.documentFactory;
+    }
+
+    public boolean existsPublication(String id) {
+        return getDocumentFactory().existsPublication(id);
+    }
+
+}

Modified: lenya/trunk/org.apache.lenya.core.janitor/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.janitor/pom.xml?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.janitor/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.janitor/pom.xml Fri Feb  6 17:55:28 2009
@@ -16,6 +16,10 @@
   <name>Apache Lenya Core Janitor</name>
   <dependencies>
     <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-api</artifactId>
     </dependency>

Modified: lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java (original)
+++ lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java Fri Feb  6 17:55:28 2009
@@ -19,8 +19,10 @@
 
 import java.io.File;
 
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.observation.AbstractRepositoryListener;
 import org.apache.lenya.cms.observation.DocumentEvent;
@@ -28,11 +30,16 @@
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
 
 /**
  * The content janitor cleans up empty directories after a document is removed.
  */
 public class ContentJanitor extends AbstractRepositoryListener {
+    
+    private RepositoryManager repositoryManager;
 
     public void eventFired(RepositoryEvent repoEvent) {
         
@@ -45,22 +52,27 @@
             return;
         }
         
-        ContextUtility util = null;
         try {
-            util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            Request request = util.getRequest();
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+            ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils
+                    .getCurrentWebApplicationContext().getBean(ProcessInfoProvider.ROLE);
+            HttpServletRequest request = process.getRequest();
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             Publication pub = factory.getPublication(event.getPublicationId());
             File contentFile = pub.getContentDirectory(event.getArea());
             String contentUri = contentFile.toURI().toString();
             SourceUtil.deleteEmptyCollections(contentUri, this.manager);
         } catch (Exception e) {
             throw new RuntimeException(e);
-        } finally {
-            if (util != null) {
-                this.manager.release(util);
-            }
         }
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java Fri Feb  6 17:55:28 2009
@@ -23,48 +23,45 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.components.modules.input.AbstractInputModule;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.lenya.cms.linking.LinkRewriter;
 import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
 import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
 
 /**
  * <p>
- * Input module for getting the base URL which may be prepended to internal URLs
- * to construct links. The functionality corresponds to the
- * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer} with one
- * exception: If the <em>webappUrl</em> parameter is an empty string, the root
- * proxy URL (or the context prefix, resp.) is returned.
+ * Input module for getting the base URL which may be prepended to internal URLs to construct links.
+ * The functionality corresponds to the
+ * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer} with one exception: If the
+ * <em>webappUrl</em> parameter is an empty string, the root proxy URL (or the context prefix,
+ * resp.) is returned.
  * </p>
  * <p>
  * Usage: <code>{proxy:{webappUrl}}</code>
  * </p>
  * <p>
- * The module can be configured to use absolute or relative URLs in the same way
- * as the {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer}.
+ * The module can be configured to use absolute or relative URLs in the same way as the
+ * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer}.
  * </p>
  */
-public class ProxyModule extends AbstractInputModule implements Serviceable {
+public class ProxyModule extends AbstractInputModule {
 
     protected static final String ATTRIBUTE_TYPE = "type";
     protected static final String URL_TYPE_ABSOLUTE = "absolute";
     protected static final String URL_TYPE_RELATIVE = "relative";
     protected static final String PARAMETER_URLS = "urls";
 
-    private ServiceManager manager;
     private boolean relativeUrls;
+    private RepositoryManager repositoryManager;
 
     /**
      * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
+     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
      */
     public Object getAttribute(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {
@@ -92,9 +89,9 @@
 
     protected String rewrite(Request request, String url) throws RepositoryException,
             ConfigurationException {
-        Session session = RepositoryUtil.getSession(this.manager, request);
-        LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, session, request
-                .getRequestURI(), request.isSecure(), false, this.relativeUrls);
+        Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+        LinkRewriter rewriter = new OutgoingLinkRewriter(session, request.getRequestURI(), request
+                .isSecure(), false, this.relativeUrls);
         if (!rewriter.matches(url)) {
             throw new ConfigurationException("The URL [" + url + "] can't be rewritten!");
         }
@@ -112,8 +109,7 @@
 
     /**
      * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
+     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
      */
     public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {
@@ -121,13 +117,6 @@
         return objects;
     }
 
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
     public void configure(Configuration conf) throws ConfigurationException {
         super.configure(conf);
         Configuration urlConfig = conf.getChild(PARAMETER_URLS, false);
@@ -136,7 +125,7 @@
             setUrlType(value);
         }
     }
-    
+
     protected void setUrlType(String value) throws ConfigurationException {
         if (value.equals(URL_TYPE_RELATIVE)) {
             this.relativeUrls = true;
@@ -148,4 +137,12 @@
         }
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java Fri Feb  6 17:55:28 2009
@@ -21,9 +21,6 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.components.modules.input.AbstractInputModule;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
@@ -31,22 +28,26 @@
 import org.apache.lenya.cms.linking.UuidToUrlRewriter;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.util.ServletHelper;
 
 /**
  * Transform lenya-document: URLs to web application URLs.
  * @see UuidToUrlRewriter
  */
-public class UuidToUrlModule extends AbstractInputModule implements Serviceable {
+public class UuidToUrlModule extends AbstractInputModule {
+    
+    protected RepositoryManager repositoryManager;
+    protected LinkResolver linkResolver;
     
-    private ServiceManager manager;
-
     public Object getAttribute(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {
         Request request = ObjectModelHelper.getRequest(objectModel);
         try {
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
-            LinkResolver linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
+            Session session = RepositoryUtil.getSession(this.repositoryManager, request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             String currentUrl = ServletHelper.getWebappURI(request);
             
             UuidToUrlRewriter rewriter = new UuidToUrlRewriter(currentUrl, linkResolver, factory);
@@ -61,8 +62,12 @@
         }
     }
 
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public void setLinkResolver(LinkResolver linkResolver) {
+        this.linkResolver = linkResolver;
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java Fri Feb  6 17:55:28 2009
@@ -21,19 +21,11 @@
 import java.net.MalformedURLException;
 import java.util.Map;
 
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceException;
@@ -48,6 +40,9 @@
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.util.Query;
 import org.apache.lenya.util.ServletHelper;
 
@@ -61,54 +56,30 @@
  * </p>
  * <ul>
  * <li><strong>format</strong> - the resource type format</li>
- * <li><strong>session</strong> - the session.
- *   To use the session of the current usecase, specify <code>session=usecase</code></li>
+ * <li><strong>session</strong> - the session. To use the session of the current usecase, specify
+ * <code>session=usecase</code></li>
  * </ul>
  */
-public class DocumentSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
-        Contextualizable, Serviceable, Configurable {
+public class DocumentSourceFactory extends AbstractLogEnabled implements SourceFactory {
 
     /**
      * The URI scheme.
      */
     public static final String SCHEME = "lenya-document";
 
-    private Context context;
-    private ServiceManager manager;
-
-    /**
-     * Used for resolving the object model.
-     * 
-     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
-     */
-    public void contextualize(Context context) throws ContextException {
-        this.context = context;
-    }
-    
     private SourceResolver sourceResolver;
+    private LinkResolver linkResolver;
+    private RepositoryManager repositoryManager;
 
     /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /**
-     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
-     */
-    public void configure(Configuration configuration) throws ConfigurationException {
-    }
-
-    /**
-     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String,
-     *      java.util.Map)
+     * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
      */
     public Source getSource(String location, Map parameters) throws MalformedURLException,
             IOException, SourceException {
-        
-        Map objectModel = ContextHelper.getObjectModel(this.context);
-        Request request = ObjectModelHelper.getRequest(objectModel);
+
+        ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils
+                .getCurrentWebApplicationContext().getBean(ProcessInfoProvider.ROLE);
+        HttpServletRequest request = process.getRequest();
 
         String[] uriAndQuery = location.split("\\?");
 
@@ -118,26 +89,21 @@
             queryString = uriAndQuery[1];
         }
 
-        LinkResolver resolver = null;
         try {
-            if (this.sourceResolver == null) {
-                this.sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            }
 
-            resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             String webappUrl = ServletHelper.getWebappURI(request);
             LinkTarget target;
             if (factory.isDocument(webappUrl)) {
                 Document currentDoc = factory.getFromURL(webappUrl);
-                target = resolver.resolve(currentDoc, linkUri);
-            }
-            else {
+                target = getLinkResolver().resolve(currentDoc, linkUri);
+            } else {
                 Link link = new Link(linkUri);
                 contextualize(link, webappUrl);
-                target = resolver.resolve(factory, link.getUri());
+                target = getLinkResolver().resolve(factory, link.getUri());
             }
-            
+
             if (!target.exists()) {
                 throw new SourceNotFoundException("Source not found: [" + location + "]");
             }
@@ -204,4 +170,28 @@
         this.sourceResolver.release(source);
     }
 
+    public void setLinkResolver(LinkResolver linkResolver) {
+        this.linkResolver = linkResolver;
+    }
+
+    public LinkResolver getLinkResolver() {
+        return linkResolver;
+    }
+
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java Fri Feb  6 17:55:28 2009
@@ -30,6 +30,7 @@
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
 import org.xml.sax.SAXException;
@@ -41,6 +42,7 @@
 public class IncomingProxyTransformer extends AbstractLinkTransformer {
     
     private LinkRewriter rewriter;
+    private RepositoryManager repositoryManager;
 
     public void setup(SourceResolver _resolver, Map _objectModel, String _source,
             Parameters params) throws ProcessingException, SAXException, IOException {
@@ -48,8 +50,8 @@
         Request request = ObjectModelHelper.getRequest(_objectModel);
 
         try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             String webappUrl = getWebappUrl(params, objectModel);
             URLInformation info = new URLInformation(webappUrl);
             String pubId = info.getPublicationId();
@@ -68,4 +70,12 @@
         this.rewriter = null;
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java Fri Feb  6 17:55:28 2009
@@ -29,9 +29,9 @@
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.lenya.cms.linking.LinkRewriter;
 import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
+import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
 import org.xml.sax.SAXException;
 
 /**
@@ -39,8 +39,8 @@
  * Proxy transformer.
  * </p>
  * <p>
- * The resulting URLs can either be absolute (default) or relative. You can
- * either configure this when declaring the transformer:
+ * The resulting URLs can either be absolute (default) or relative. You can either configure this
+ * when declaring the transformer:
  * </p>
  * <code><pre>
  *     &lt;map:transformer ... &gt;
@@ -65,9 +65,10 @@
 
     private boolean relativeUrls = false;
     private LinkRewriter rewriter;
+    private RepositoryManager repositoryManager;
 
-    public void setup(SourceResolver resolver, Map objectModel, String source,
-            Parameters params) throws ProcessingException, SAXException, IOException {
+    public void setup(SourceResolver resolver, Map objectModel, String source, Parameters params)
+            throws ProcessingException, SAXException, IOException {
         super.setup(resolver, objectModel, source, params);
         Request request = ObjectModelHelper.getRequest(objectModel);
 
@@ -75,10 +76,10 @@
             if (params.isParameter(PARAMETER_URLS)) {
                 setUrlType(params.getParameter(PARAMETER_URLS));
             }
-            Session session = RepositoryUtil.getSession(this.manager, request);
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
             String webappUrl = getWebappUrl(params, objectModel);
-            this.rewriter = new OutgoingLinkRewriter(this.manager, session, webappUrl,
-                    request.isSecure(), false, this.relativeUrls);
+            this.rewriter = new OutgoingLinkRewriter(session, webappUrl, request.isSecure(), false,
+                    this.relativeUrls);
         } catch (final Exception e) {
             throw new RuntimeException(e);
         }
@@ -113,4 +114,12 @@
         this.rewriter = null;
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java Fri Feb  6 17:55:28 2009
@@ -30,6 +30,7 @@
 import org.apache.lenya.cms.linking.UrlToUuidRewriter;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
 import org.xml.sax.SAXException;
@@ -48,6 +49,7 @@
 public class UrlToUuidTransformer extends AbstractLinkTransformer {
 
     private LinkRewriter rewriter;
+    private RepositoryManager repositoryManager;
 
     /**
      * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
@@ -60,8 +62,8 @@
 
         Request request = ObjectModelHelper.getRequest(_objectModel);
         try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             this.rewriter = new UrlToUuidRewriter(factory);
         } catch (final Exception e1) {
             throw new ProcessingException(e1);
@@ -77,4 +79,12 @@
         this.rewriter = null;
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
+    public RepositoryManager getRepositoryManager() {
+        return repositoryManager;
+    }
+
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java Fri Feb  6 17:55:28 2009
@@ -20,7 +20,6 @@
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.ObjectModelHelper;
@@ -31,6 +30,9 @@
 import org.apache.lenya.cms.linking.UuidToUrlRewriter;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
 import org.xml.sax.SAXException;
 
 /**
@@ -40,10 +42,11 @@
  * 
  * $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
  */
-public class UuidToUrlTransformer extends AbstractLinkTransformer implements Disposable {
+public class UuidToUrlTransformer extends AbstractLinkTransformer {
 
     private UuidToUrlRewriter rewriter;
     private LinkResolver linkResolver;
+    protected RepositoryManager repositoryManager;
     
     public void setup(SourceResolver resolver, Map objectModel, String source,
             Parameters params) throws ProcessingException, SAXException, IOException {
@@ -53,7 +56,8 @@
         this.useIgnore = true;
         try {
             String currentUrl = getWebappUrl(params, objectModel);
-            DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+            Session session = RepositoryUtil.getSession(this.repositoryManager, request);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             this.linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
             this.rewriter = new UuidToUrlRewriter(currentUrl, this.linkResolver, factory);
             
@@ -84,4 +88,8 @@
         this.rewriter = null;
     }
 
+    public void setRepositoryManager(RepositoryManager repositoryManager) {
+        this.repositoryManager = repositoryManager;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java Fri Feb  6 17:55:28 2009
@@ -17,12 +17,11 @@
  */
 package org.apache.lenya.cms.linking;
 
-import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.ResourceType;
@@ -33,20 +32,16 @@
 import org.w3c.dom.NodeList;
 
 /**
- * Utility class to convert <code>lenya-document:</code> links from and to URL
- * links.
+ * Utility class to convert <code>lenya-document:</code> links from and to URL links.
  */
 public class LinkConverter extends AbstractLogEnabled {
 
-    private ServiceManager manager;
-
     /**
      * Creates a link converter.
-     * @param manager The service manager.
      * @param logger The logger.
      */
-    public LinkConverter(ServiceManager manager, Log logger) {
-        this.manager = manager;
+    public LinkConverter(Log logger) {
+        setLogger(logger);
     }
 
     /**
@@ -59,8 +54,8 @@
     }
 
     /**
-     * Converts all URL-based links to UUID-based links. The link URLs can
-     * originate from a different publication.
+     * Converts all URL-based links to UUID-based links. The link URLs can originate from a
+     * different publication.
      * @param srcPub The publication where the content comes from.
      * @param examinedDocument The document in the target publication.
      * @param useContextPath If the request's context path should be considered.
@@ -83,7 +78,8 @@
             } else {
                 Publication pub = examinedDocument.getPublication();
                 LinkRewriter incomingRewriter = new IncomingLinkRewriter(pub);
-                LinkRewriter urlToUuidRewriter = new UrlToUuidRewriter(examinedDocument.getFactory());
+                LinkRewriter urlToUuidRewriter = new UrlToUuidRewriter(examinedDocument
+                        .getFactory());
 
                 org.w3c.dom.Document xml = DocumentHelper.readDocument(examinedDocument
                         .getInputStream());
@@ -105,7 +101,8 @@
                         if (getLogger().isDebugEnabled()) {
                             getLogger().debug("Convert links: Check URL [" + url + "]");
                         }
-                        final String originalUrl = url.startsWith(prefix) ? url.substring(prefix.length()) : url;
+                        final String originalUrl = url.startsWith(prefix) ? url.substring(prefix
+                                .length()) : url;
                         final String srcPubUrl;
                         if (incomingRewriter.matches(originalUrl)) {
                             srcPubUrl = incomingRewriter.rewrite(originalUrl);
@@ -114,7 +111,8 @@
                         }
                         final String srcPubPrefix = "/" + srcPub.getId() + "/";
                         if (srcPubUrl.startsWith(srcPubPrefix)) {
-                            final String destPubUrl = "/" + pub.getId() + "/" + srcPubUrl.substring(srcPubPrefix.length());
+                            final String destPubUrl = "/" + pub.getId() + "/"
+                                    + srcPubUrl.substring(srcPubPrefix.length());
                             if (urlToUuidRewriter.matches(destPubUrl)) {
                                 String rewrittenUrl = urlToUuidRewriter.rewrite(destPubUrl);
                                 attribute.setValue(rewrittenUrl);
@@ -134,17 +132,9 @@
     }
 
     protected String getContextPath() throws ServiceException {
-        String prefix;
-        ContextUtility ctxUtil = null;
-        try {
-            ctxUtil = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
-            prefix = ctxUtil.getRequest().getContextPath();
-        } finally {
-            if (ctxUtil != null) {
-                this.manager.release(ctxUtil);
-            }
-        }
-        return prefix;
+        ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
+                ProcessInfoProvider.ROLE);
+        return process.getRequest().getContextPath();
     }
 
 }



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