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/09 22:04:27 UTC

svn commit: r742731 - in /lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms: cocoon/transformation/ usecase/ usecase/gui/impl/ usecase/impl/

Author: andreas
Date: Mon Feb  9 21:04:26 2009
New Revision: 742731

URL: http://svn.apache.org/viewvc?rev=742731&view=rev
Log:
Simplify API, replace repository classes with publication classes for better SoC.

Modified:
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
    lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java Mon Feb  9 21:04:26 2009
@@ -38,13 +38,9 @@
 import org.apache.lenya.ac.Role;
 import org.apache.lenya.cms.ac.PolicyUtil;
 import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-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.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.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.usecase.Usecase;
 import org.apache.lenya.cms.usecase.UsecaseMessage;
 import org.apache.lenya.cms.usecase.UsecaseResolver;
@@ -242,7 +238,7 @@
     private Publication publication;
     private AccessControllerResolver acResolver;
     private String sourceUrl;
-    private RepositoryManager repositoryManager;
+    private Repository repository;
 
     /**
      * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
@@ -260,10 +256,8 @@
         try {
             this.roles = PolicyUtil.getRoles(this.request);
             String webappUrl = ServletHelper.getWebappURI(this.request);
-            Session session = RepositoryUtil.getSession(getRepositoryManager(), this.request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
-            final String id = new URLInformation(webappUrl).getPublicationId();
-            this.publication = factory.getPublication(id);
+            Session session = this.repository.getSession(this.request);
+            this.publication = session.getUriHandler().getPublication(webappUrl);
 
             this.serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
                     + "Selector");
@@ -309,12 +303,8 @@
         this.sourceUrl = null;
     }
 
-    public RepositoryManager getRepositoryManager() {
-        return repositoryManager;
-    }
-
-    public void setRepositoryManager(RepositoryManager repositoryManager) {
-        this.repositoryManager = repositoryManager;
+    public void setRepository(Repository repository) {
+        this.repository = repository;
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java Mon Feb  9 21:04:26 2009
@@ -78,7 +78,6 @@
 
     protected static final String PARAMETER_STATE_MACHINE = "private.stateMachine";
     protected static final String PARAMETER_SESSION = "private.session";
-    protected static final String PARAMETER_FACTORY = "private.factory";
     protected static final String PARAMETER_CHECKOUT_RESTRICTED_TO_SESSION = "checkoutRestrictedToSession";
 
     protected static final String PARAMETERS_INITIALIZED = "private.parametersInitialized";
@@ -546,16 +545,6 @@
         return (Part) getParameter(name);
     }
 
-    protected DocumentFactory getDocumentFactory() {
-        DocumentFactory factory = (DocumentFactory) getParameter(PARAMETER_FACTORY);
-        Session session = getSession();
-        if (factory == null || factory != session.getDocumentFactory()) {
-            factory = session.getDocumentFactory();
-            setParameter(PARAMETER_FACTORY, factory);
-        }
-        return factory;
-    }
-
     /**
      * TODO: Add init-method to bean.
      */
@@ -736,9 +725,7 @@
                 if (!objects[i].isLocked()) {
                     objects[i].lock();
                 }
-                if (!isOptimistic()
-                        && !objects[i].isCheckedOutBySession(getSession().getDocumentFactory()
-                                .getSession())) {
+                if (!isOptimistic() && !objects[i].isCheckedOutBySession(getRepositorySession())) {
                     objects[i].checkout(checkoutRestrictedToSession());
                 }
             }
@@ -752,8 +739,7 @@
 
         for (int i = 0; i < objects.length; i++) {
             if (objects[i].isCheckedOut()
-                    && !objects[i].isCheckedOutBySession(getSession().getDocumentFactory()
-                            .getSession())) {
+                    && !objects[i].isCheckedOutBySession(getRepositorySession())) {
                 if (getLogger().isDebugEnabled()) {
                     getLogger().debug(
                             "AbstractUsecase::lockInvolvedObjects() can not execute, object ["
@@ -765,6 +751,10 @@
         return canExecute;
     }
 
+    private org.apache.lenya.cms.repository.Session getRepositorySession() {
+        return (org.apache.lenya.cms.repository.Session) getSession();
+    }
+
     /**
      * @see org.apache.lenya.cms.usecase.Usecase#cancel()
      */
@@ -879,11 +869,7 @@
     protected Publication getPublication() {
         if (this.pub == null) {
             String pubId = new URLInformation(getSourceURL()).getPublicationId();
-            try {
-                this.pub = getDocumentFactory().getPublication(pubId);
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
+            this.pub = getSession().getPublication(pubId);
         }
         return this.pub;
     }

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java Mon Feb  9 21:04:26 2009
@@ -19,8 +19,7 @@
 package org.apache.lenya.cms.usecase;
 
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.Session;
 
 /**
  * <p>
@@ -56,30 +55,16 @@
     }
 
     /*
-    public void setParameter(String name, Object value) {
-        if (name.equals(SOURCE_URL)) {
-            setSourceURL((String) value);
-        }
-        else {
-            super.setParameter(name, value);
-        }
-    }
-    */
+     * public void setParameter(String name, Object value) { if (name.equals(SOURCE_URL)) {
+     * setSourceURL((String) value); } else { super.setParameter(name, value); } }
+     */
 
     /**
-     * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String)
-    public void setSourceURL(String url) {
-        try {
-            DocumentFactory factory = getDocumentFactory();
-            if (factory.isDocument(url)) {
-                Document document = factory.getFromURL(url);
-                setParameter(DOCUMENT, document);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        super.setParameter(SOURCE_URL, url);
-    }
+     * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String) public void
+     *      setSourceURL(String url) { try { DocumentFactory factory = getDocumentFactory(); if
+     *      (factory.isDocument(url)) { Document document = factory.getFromURL(url);
+     *      setParameter(DOCUMENT, document); } } catch (Exception e) { throw new
+     *      RuntimeException(e); } super.setParameter(SOURCE_URL, url); }
      */
 
     /**
@@ -88,24 +73,20 @@
      */
     protected Document getSourceDocument() {
         Document doc = (Document) getParameter(DOCUMENT);
-        if (doc == null || doc.getFactory().getSession() != getSession()) {
-            try {
-                DocumentFactory factory = getDocumentFactory();
-                String sourceUrl = getParameterAsString(SOURCE_URL);
-                if (factory.isDocument(sourceUrl)) {
-                    doc = factory.getFromURL(sourceUrl);
-                    setParameter(DOCUMENT, doc);
-                }
-            } catch (DocumentBuildException e) {
-                throw new RuntimeException(e);
+        Session session = getSession();
+        if (doc == null || doc.getSession() != session) {
+            String sourceUrl = getParameterAsString(SOURCE_URL);
+            if (session.getUriHandler().isDocument(sourceUrl)) {
+                doc = session.getUriHandler().getDocument(sourceUrl);
+                setParameter(DOCUMENT, doc);
             }
         }
         return doc;
     }
 
     /**
-     * Sets the target document for the case that the usecase execution
-     * succeeded (see {@link #getTargetDocument(boolean)}).
+     * Sets the target document for the case that the usecase execution succeeded (see
+     * {@link #getTargetDocument(boolean)}).
      * @param document A document.
      */
     protected void setTargetDocument(Document document) {
@@ -113,9 +94,9 @@
     }
 
     /**
-     * Returns the document to be redirected to after the usecase has been
-     * completed. If the parameter <code>success</code> is false, the source
-     * document is returned (override this method to change this behaviour).
+     * Returns the document to be redirected to after the usecase has been completed. If the
+     * parameter <code>success</code> is false, the source document is returned (override this
+     * method to change this behaviour).
      * @param success If the usecase was successfully completed.
      * @return A document.
      */
@@ -128,8 +109,8 @@
     }
 
     /**
-     * If {@link #setTargetDocument(Document)}was not called, the URL of the
-     * source document ( {@link #getSourceDocument()}) is returned.
+     * If {@link #setTargetDocument(Document)}was not called, the URL of the source document (
+     * {@link #getSourceDocument()}) is returned.
      * @see org.apache.lenya.cms.usecase.Usecase#getTargetURL(boolean)
      */
     public String getTargetURL(boolean success) {
@@ -155,20 +136,14 @@
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#setDefaultTargetURL(java.lang.String)
      */
     protected void setDefaultTargetURL(String url) {
-        try {
-            Document target = getDocumentFactory().getFromURL(url);
-            setParameter(TARGET_DOCUMENT, target);
-        } catch (DocumentBuildException e) {
-            throw new RuntimeException(e);
-        }
+        Document target = getSession().getUriHandler().getDocument(url);
+        setParameter(TARGET_DOCUMENT, target);
     }
 
     /**
-     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
-    protected void initParameters() {
-        super.initParameters();
-
-        setParameter(DOCUMENT, getSourceDocument());
-    }
+     * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters() protected void
+     *      initParameters() { super.initParameters();
+     * 
+     *      setParameter(DOCUMENT, getSourceDocument()); }
      */
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java Mon Feb  9 21:04:26 2009
@@ -36,13 +36,10 @@
 import org.apache.lenya.ac.Role;
 import org.apache.lenya.cms.ac.PolicyUtil;
 import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-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.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
 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.cms.usecase.Usecase;
 import org.apache.lenya.cms.usecase.UsecaseMessage;
 import org.apache.lenya.cms.usecase.UsecaseResolver;
@@ -66,14 +63,10 @@
     private Map name2group = new HashMap();
 
     private UsecaseResolver usecaseResolver;
-    private RepositoryManager repositoryManager;
+    private Repository repository;
 
-    public RepositoryManager getRepositoryManager() {
-        return repositoryManager;
-    }
-
-    public void setRepositoryManager(RepositoryManager repositoryManager) {
-        this.repositoryManager = repositoryManager;
+    public void setRepository(Repository repository) {
+        this.repository = repository;
     }
 
     /**
@@ -173,10 +166,9 @@
                 }
 
                 HttpServletRequest request = getRequest();
-                Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
-                DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
+                Session session = this.repository.getSession(request);
                 String pubId = new URLInformation(this.webappUrl).getPublicationId();
-                Publication pub = factory.getPublication(pubId);
+                Publication pub = session.getPublication(pubId);
                 if (!authorizer.authorizeUsecase(usecaseName, getRoles(), pub)) {
                     if (getLogger().isDebugEnabled()) {
                         getLogger().debug("Usecase not authorized");

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java Mon Feb  9 21:04:26 2009
@@ -34,8 +34,6 @@
 import org.apache.lenya.ac.Role;
 import org.apache.lenya.cms.ac.PolicyUtil;
 import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-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.publication.Repository;
 import org.apache.lenya.cms.publication.Session;

Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java Mon Feb  9 21:04:26 2009
@@ -26,16 +26,13 @@
 import org.apache.cocoon.processing.ProcessInfoProvider;
 import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
-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.publication.URLInformation;
+import org.apache.lenya.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
-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.cms.usecase.Usecase;
 import org.apache.lenya.cms.usecase.UsecaseResolver;
+import org.apache.lenya.util.ServletHelper;
 
 /**
  * Usecase resolver implementation.
@@ -45,7 +42,7 @@
 public class UsecaseResolverImpl extends AbstractLogEnabled implements UsecaseResolver {
 
     private PublicationTemplateManager templateManager;
-    private RepositoryManager repositoryManager;
+    private Repository repository;
 
     /**
      * @see org.apache.lenya.cms.usecase.UsecaseResolver#release(org.apache.lenya.cms.usecase.Usecase)
@@ -85,13 +82,11 @@
         Publication publication = null;
         try {
 
-            Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
-            URLInformation info = new URLInformation(webappUrl);
-            String pubId = info.getPublicationId();
+            Session session = this.repository.getSession(request);
 
-            if (pubId != null && factory.existsPublication(pubId)) {
-                publication = factory.getPublication(pubId);
+            String uri = ServletHelper.getWebappURI(request);
+            if (session.getUriHandler().isPublication(uri)) {
+                publication = session.getUriHandler().getPublication(uri);
             }
         } catch (Exception e) {
             throw new RuntimeException(e);
@@ -148,12 +143,8 @@
         return templateManager;
     }
 
-    public void setRepositoryManager(RepositoryManager repositoryManager) {
-        this.repositoryManager = repositoryManager;
-    }
-
-    public RepositoryManager getRepositoryManager() {
-        return repositoryManager;
+    public void setRepository(Repository repository) {
+        this.repository = repository;
     }
 
 }
\ No newline at end of file



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