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/10 02:35:07 UTC

svn commit: r742811 [1/3] - in /lenya/trunk: org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ org.apache.lenya.core.api/src/main/ja...

Author: andreas
Date: Tue Feb 10 01:34:58 2009
New Revision: 742811

URL: http://svn.apache.org/viewvc?rev=742811&view=rev
Log:
Move repository classes out of the core API.

Added:
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/DocumentEvent.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/HistoryWrapper.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/IdentityWrapper.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RevisionWrapper.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/cocoon/
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/Observeable.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Identity.java
Removed:
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/DocumentEvent.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
Modified:
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
    lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
    lenya/trunk/org.apache.lenya.core.impl/pom.xml
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
    lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
    lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/publication/DublinCoreTest.java
    lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/rc/RCMLTest.java
    lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/transaction/MockTransactionable.java
    lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/transaction/TransactionTest.java
    lenya/trunk/org.apache.lenya.core.repository/pom.xml
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCML.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Node.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java
    lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java Tue Feb 10 01:34:58 2009
@@ -24,7 +24,7 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
+import org.apache.lenya.cms.publication.Document;
 
 
 /**
@@ -41,11 +41,11 @@
         super.act(redirector, resolver, objectModel, src, parameters);
 
         HashMap actionMap = new HashMap();
-        Node node = getNode();
-
-        if (node.isCheckedOut()) {
-            actionMap.put("filename", node.getSourceURI());
-            actionMap.put("user", node.getCheckoutUserId());
+        
+        Document document = getDocument();
+        if (document.isCheckedOut()) {
+            actionMap.put("filename", document.getSourceURI());
+            actionMap.put("user", document.getCheckoutUserId());
             return actionMap;
         }
         return null;

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java Tue Feb 10 01:34:58 2009
@@ -30,11 +30,8 @@
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.lenya.ac.Identity;
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.Repository;
 import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
 import org.apache.lenya.util.ServletHelper;
 
 /**
@@ -63,7 +60,7 @@
             String url = ServletHelper.getWebappURI(request);
             if (session.getUriHandler().isDocument(url)) {
                 Document document = session.getUriHandler().getDocument(url);
-                if (document.isCheckedOutBySession(session)) {
+                if (document.isCheckedOutBySession(session.getId(), session.getIdentity().getUser().getId())) {
                     document.checkin();
                 }
             }
@@ -75,7 +72,7 @@
             getLogger().error("Could not check in node: ", e);
             Map actionMap = new HashMap();
             actionMap.put("exception", "genericException");
-            actionMap.put("filename", getNode().getSourceURI());
+            actionMap.put("filename", getDocument().getSourceURI());
             actionMap.put("message", e.getMessage());
             return actionMap;
         }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java Tue Feb 10 01:34:58 2009
@@ -26,9 +26,9 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.SourceResolver;
-import org.apache.commons.lang.Validate;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.RepositoryException;
+import org.apache.lenya.cms.publication.Session;
 
 /**
  * Action doing reserved checkout
@@ -43,24 +43,25 @@
         super.act(redirector, resolver, objectModel, src, parameters);
 
         HashMap actionMap = new HashMap();
+        Document doc = getDocument();
 
         //check out
         try {
             
-            Node node = getNode();
             String username = getUsername();
             
-            assert node != null;
+            assert doc != null;
             assert username != null;
 
-            if (!node.isCheckedOutBySession(node.getRepositorySession())) {
-                node.checkout();
+            Session session = doc.getSession();
+            if (!doc.isCheckedOutBySession(session.getId(), session.getIdentity().getUser().getId())) {
+                doc.checkout();
             }
         } catch (RepositoryException e) {
             actionMap.put("exception", "genericException");
-            actionMap.put("filename", getNode().getSourceURI());
+            actionMap.put("filename", doc.getSourceURI());
             actionMap.put("message", "" + e.getMessage());
-            getLogger().error("The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
+            getLogger().error("The document " + doc.getSourceURI() + " couldn't be checked out: ", e);
 
             return actionMap;
         }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java Tue Feb 10 01:34:58 2009
@@ -26,46 +26,49 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.RepositoryException;
 
 /**
- * An action that tests if a document is already checked out by a given user.
- * If it isn't, a check out will be tried.
+ * An action that tests if a document is already checked out by a given user. If it isn't, a check
+ * out will be tried.
  */
 
 public class ReservedCheckoutTestAction extends RevisionControllerAction {
 
     /**
-	 * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
-	 */
-	public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
-        Parameters parameters) throws Exception {
+     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
+     *      org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String,
+     *      org.apache.avalon.framework.parameters.Parameters)
+     */
+    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
+            Parameters parameters) throws Exception {
         super.act(redirector, resolver, objectModel, src, parameters);
 
         HashMap actionMap = new HashMap();
 
+        Document doc = getDocument();
         try {
-            Node node = getNode();
 
-			if (!node.isCheckedOut() || !node.getCheckoutUserId().equals(getUsername())) {
-				//check out
-			    getNode().checkout();
-			}
-		} catch (RepositoryException e) {
-			actionMap.put("exception", "RepositoryException");
-			actionMap.put("filename", getNode().getSourceURI());
-
-			return actionMap;
-		} catch (Exception e) {
-			actionMap.put("exception", "genericException");
-			actionMap.put("filename", getNode().getSourceURI());
-			actionMap.put("message", e.getMessage());
-			getLogger().error(".act(): The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
+            if (!doc.isCheckedOut() || !doc.getCheckoutUserId().equals(getUsername())) {
+                // check out
+                doc.checkout();
+            }
+        } catch (RepositoryException e) {
+            actionMap.put("exception", "RepositoryException");
+            actionMap.put("filename", doc.getSourceURI());
+
+            return actionMap;
+        } catch (Exception e) {
+            actionMap.put("exception", "genericException");
+            actionMap.put("filename", doc.getSourceURI());
+            actionMap.put("message", e.getMessage());
+            getLogger().error(
+                    ".act(): The document " + doc.getSourceURI() + " couldn't be checked out: ",
+                    e);
 
-			return actionMap;
-		}
+            return actionMap;
+        }
         return null;
     }
 }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java Tue Feb 10 01:34:58 2009
@@ -18,7 +18,6 @@
 
 package org.apache.lenya.cms.cocoon.acting;
 
-import java.io.File;
 import java.util.Map;
 
 import javax.servlet.http.HttpSession;
@@ -38,8 +37,6 @@
 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.rc.RCEnvironment;
-import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.util.ServletHelper;
 
 /**
@@ -49,11 +46,9 @@
  */
 public class RevisionControllerAction extends ServiceableAction {
 
-    private String rcmlDirectory = null;
-    private String backupDirectory = null;
     private String username = null;
-    private Node node = null;
     private Repository repository;
+    private Document document;
 
     /**
      * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
@@ -77,25 +72,16 @@
         String id = new URLInformation(ServletHelper.getWebappURI(request)).getPublicationId();
         Publication publication = repoSession.getPublication(id);
 
-        Document document = null;
+        Document doc = null;
 
         try {
             envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel, publication);
-            document = envelope.getDocument();
+            doc = envelope.getDocument();
         } catch (Exception e) {
             getLogger().error("Resolving page envelope failed: ", e);
             throw e;
         }
 
-        // get Parameters for RC
-        String publicationPath = publication.getDirectory().getCanonicalPath();
-        RCEnvironment rcEnvironment = RCEnvironment.getInstance(publication.getServletContext()
-                .getCanonicalPath(), getLogger());
-        this.rcmlDirectory = rcEnvironment.getRCMLDirectory();
-        this.rcmlDirectory = publicationPath + File.separator + this.rcmlDirectory;
-        this.backupDirectory = rcEnvironment.getBackupDirectory();
-        this.backupDirectory = publicationPath + File.separator + this.backupDirectory;
-
         // Get session
         HttpSession session = request.getSession(false);
 
@@ -112,11 +98,11 @@
         // cannot be get from
         // the page-envelope
 
-        String path = document.getPath();
+        String path = doc.getPath();
         int bx = path.lastIndexOf("-bxe");
 
         if (bx > 0) {
-            String language = document.getLanguage();
+            String language = doc.getLanguage();
 
             int l = path.length();
             int bxLength = "-bxe".length();
@@ -133,11 +119,10 @@
                 }
             }
 
-            Document srcDoc = document.area().getSite().getNode(path).getLink(language).getDocument();
-            this.node = srcDoc.getRepositoryNode();
+            this.document = doc.area().getSite().getNode(path).getLink(language).getDocument();
 
         } else {
-            this.node = document.getRepositoryNode();
+            this.document = doc;
         }
 
         this.username = null;
@@ -160,8 +145,8 @@
      * Get the node.
      * @return the node
      */
-    protected Node getNode() {
-        return this.node;
+    protected Document getDocument() {
+        return this.document;
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java Tue Feb 10 01:34:58 2009
@@ -20,6 +20,7 @@
 
 package org.apache.lenya.cms.cocoon.components.modules.input;
 
+import java.net.MalformedURLException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
@@ -32,7 +33,6 @@
 import org.apache.cocoon.environment.Request;
 import org.apache.commons.lang.StringUtils;
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
 import org.apache.lenya.cms.publication.DocumentLocator;
 import org.apache.lenya.cms.publication.PageEnvelope;
 import org.apache.lenya.cms.publication.Publication;
@@ -161,7 +161,7 @@
             DocumentLocator loc;
             try {
                 loc = pub.getDocumentBuilder().getLocator(pub.getSession(), url);
-            } catch (DocumentBuildException e) {
+            } catch (MalformedURLException e) {
                 throw new SiteException(e);
             }
             path = loc.getPath();

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java Tue Feb 10 01:34:58 2009
@@ -22,12 +22,10 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
-import org.apache.cocoon.environment.Request;
 import org.apache.lenya.ac.AccessControlException;
 import org.apache.lenya.cms.publication.PageEnvelope;
 import org.apache.lenya.cms.publication.PageEnvelopeException;
 import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
 import org.apache.lenya.workflow.WorkflowException;
 
 /**
@@ -35,7 +33,7 @@
  * @version $Id$
  */
 public interface FlowHelper {
-	
+
     /**
      * The Avalon Role.
      */
@@ -79,9 +77,9 @@
     DocumentHelper getDocumentHelper(FOM_Cocoon cocoon);
 
     /**
-     * Resolves the request parameter value for a specific name. The parameter
-     * names are encoded as <code>{name}:{value}.{axis}</code>. This is a
-     * workaround for the &lt;input type="image"/&gt; bug in Internet Explorer.
+     * Resolves the request parameter value for a specific name. The parameter names are encoded as
+     * <code>{name}:{value}.{axis}</code>. This is a workaround for the &lt;input type="image"/&gt;
+     * bug in Internet Explorer.
      * @param cocoon The FOM_Cocoon object.
      * @param parameterName The request parameter name.
      * @return A string.
@@ -89,8 +87,7 @@
     String getImageParameterValue(FOM_Cocoon cocoon, String parameterName);
 
     /**
-     * Trigger a workflow event for the document associated with the current
-     * PageEnvelope.
+     * Trigger a workflow event for the document associated with the current PageEnvelope.
      * @param cocoon The Cocoon Flow Object Model
      * @param event The name of the workflow event to trigger.
      * @throws WorkflowException If an workflow error occurs
@@ -104,9 +101,7 @@
      * Checkis in the current document from the PageEnvelope context.
      * @param cocoon The Cocoon Flow Object Model
      * @param backup Wether a new revision should be created.
-     * @throws FileReservedCheckInException
      * @throws Exception
      */
-    void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws FileReservedCheckInException,
-            Exception;
+    void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws Exception;
 }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java Tue Feb 10 01:34:58 2009
@@ -39,8 +39,6 @@
 import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.publication.URLInformation;
 import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
-import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.workflow.WorkflowUtil;
 import org.apache.lenya.util.ServletHelper;
 import org.apache.lenya.workflow.WorkflowException;
@@ -50,7 +48,7 @@
  * This way, not the initial, but the current FOM_Cocoon object is used by the methods.
  */
 public class FlowHelperImpl extends AbstractLogEnabled implements FlowHelper {
-    
+
     private Repository repository;
     private DocumentFactoryBuilder documentFactoryBuilder;
 
@@ -149,18 +147,16 @@
     public void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
             PageEnvelopeException, AccessControlException {
         Document document = getPageEnvelope(cocoon).getDocument();
-        WorkflowUtil.invoke(getLogger(), document, event);
+        WorkflowUtil.invoke(document, event);
     }
 
     /**
      * @see org.apache.lenya.cms.cocoon.flow.FlowHelper#reservedCheckIn(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
      *      boolean)
      */
-    public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup)
-            throws FileReservedCheckInException, Exception {
+    public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws Exception {
         final PageEnvelope pageEnvelope = getPageEnvelope(cocoon);
-        Node node = pageEnvelope.getDocument().getRepositoryNode();
-        node.checkin();
+        pageEnvelope.getDocument().checkin();
     }
 
 }
\ No newline at end of file

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,27 @@
+/*
+ * 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.cocoon.source;
+
+import org.apache.excalibur.source.ModifiableSource;
+import org.apache.lenya.cms.publication.Document;
+
+public interface DocumentSource extends ModifiableSource {
+    
+    Document getDocument();
+
+}

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java Tue Feb 10 01:34:58 2009
@@ -38,7 +38,7 @@
 import org.apache.excalibur.source.SourceException;
 import org.apache.excalibur.source.SourceNotFoundException;
 import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.publication.RepositoryException;
 import org.apache.lenya.xml.DocumentHelper;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
@@ -524,13 +524,13 @@
     public static void checkout(String sourceUri, ServiceManager manager)
             throws RepositoryException, ServiceException, MalformedURLException, IOException {
         SourceResolver resolver = null;
-        RepositorySource source = null;
+        DocumentSource source = null;
         try {
 
             resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
+            source = (DocumentSource) resolver.resolveURI(sourceUri);
 
-            source.getNode().checkout();
+            source.getDocument().checkout();
 
         } finally {
             if (resolver != null) {
@@ -554,13 +554,13 @@
     public static void checkin(String sourceUri, ServiceManager manager)
             throws RepositoryException, ServiceException, MalformedURLException, IOException {
         SourceResolver resolver = null;
-        RepositorySource source = null;
+        DocumentSource source = null;
         try {
 
             resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
+            source = (DocumentSource) resolver.resolveURI(sourceUri);
 
-            source.getNode().checkin();
+            source.getDocument().checkin();
 
         } finally {
             if (resolver != null) {
@@ -580,16 +580,14 @@
      */
     public static void lock(String sourceUri, ServiceManager manager) throws RepositoryException {
         SourceResolver resolver = null;
-        RepositorySource source = null;
+        DocumentSource source = null;
         try {
 
             resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
+            source = (DocumentSource) resolver.resolveURI(sourceUri);
 
-            source.getNode().lock();
+            source.getDocument().lock();
 
-        } catch (RepositoryException e) {
-            throw e;
         } catch (Exception e) {
             throw new RepositoryException(e);
         } finally {
@@ -610,16 +608,14 @@
      */
     public static void unlock(String sourceUri, ServiceManager manager) throws RepositoryException {
         SourceResolver resolver = null;
-        RepositorySource source = null;
+        DocumentSource source = null;
         try {
 
             resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
+            source = (DocumentSource) resolver.resolveURI(sourceUri);
 
-            source.getNode().unlock();
+            source.getDocument().unlock();
 
-        } catch (RepositoryException e) {
-            throw e;
         } catch (Exception e) {
             throw new RepositoryException(e);
         } finally {
@@ -639,12 +635,12 @@
      */
     public static void registerDirty(String sourceUri, ServiceManager manager) {
         SourceResolver resolver = null;
-        RepositorySource source = null;
+        DocumentSource source = null;
         try {
 
             resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
-            source = (RepositorySource) resolver.resolveURI(sourceUri);
-            source.getNode().registerDirty();
+            source = (DocumentSource) resolver.resolveURI(sourceUri);
+            source.getDocument().registerDirty();
 
         } catch (Exception e) {
             throw new RuntimeException(e);

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java Tue Feb 10 01:34:58 2009
@@ -18,6 +18,8 @@
 
 package org.apache.lenya.cms.publication;
 
+import java.net.MalformedURLException;
+
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.thread.ThreadSafe;
@@ -97,7 +99,7 @@
         return suffix;
     }
 
-    public boolean isDocument(Session session, String url) throws DocumentBuildException {
+    public boolean isDocument(Session session, String url) {
         try {
             DocumentLocator locator = getLocatorWithoutCheck(session, url);
             if (locator != null) {
@@ -112,7 +114,7 @@
                 }
             }
         } catch (Exception e) {
-            throw new DocumentBuildException(e);
+            throw new RuntimeException(e);
         }
 
         return false;
@@ -145,12 +147,11 @@
         return url;
     }
 
-    public DocumentLocator getLocator(Session session, String webappUrl)
-            throws DocumentBuildException {
+    public DocumentLocator getLocator(Session session, String webappUrl) throws MalformedURLException {
 
         DocumentLocator locator = getLocatorWithoutCheck(session, webappUrl);
         if (locator == null) {
-            throw new DocumentBuildException("The webapp URL [" + webappUrl
+            throw new ResourceNotFoundException("The webapp URL [" + webappUrl
                     + "] does not refer to a document!");
         }
         return locator;
@@ -163,10 +164,9 @@
      * @param webappUrl The webapp URL.
      * @return A document locator or <code>null</code> if the URL doesn't
      *         refer to a locator.
-     * @throws DocumentBuildException if an error occurs.
+     * @throws MalformedURLException if the URL is not a webapp URL. 
      */
-    protected DocumentLocator getLocatorWithoutCheck(Session session, String webappUrl)
-            throws DocumentBuildException {
+    protected DocumentLocator getLocatorWithoutCheck(Session session, String webappUrl) throws MalformedURLException {
 
         if (!webappUrl.startsWith("/")) {
             return null;
@@ -192,7 +192,7 @@
         String path = documentURL;
 
         if (!path.startsWith("/")) {
-            throw new DocumentBuildException("Path [" + path + "] does not start with '/'!");
+            throw new MalformedURLException("Path [" + path + "] does not start with '/'!");
         }
 
         return DocumentLocator.getLocator(publication.getId(), info.getArea(), path, language);

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java Tue Feb 10 01:34:58 2009
@@ -83,11 +83,11 @@
      * @param area The area.
      * @param file The file representing the document.
      * @return A string.
-     * @throws DocumentDoesNotExistException when the document referenced by the file does not
+     * @throws ResourceNotFoundException when the document referenced by the file does not
      *             exist.
      */
     public String getDocumentId(Publication publication, String area, File file)
-            throws DocumentDoesNotExistException {
+            throws ResourceNotFoundException {
 
         String fileName = file.getAbsolutePath();
         String contentDirName = publication.getContentDirectory(area).getAbsolutePath();
@@ -101,7 +101,7 @@
             return relativeFileName.replace(File.separatorChar, '/');
         }
         // Document does not seem to exist
-        throw new DocumentDoesNotExistException("No document associated with file" + fileName);
+        throw new ResourceNotFoundException("No document associated with file" + fileName);
     }
 
     /**

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java Tue Feb 10 01:34:58 2009
@@ -25,16 +25,13 @@
 
 import org.apache.lenya.cms.metadata.MetaDataOwner;
 import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.cms.repository.RepositoryItem;
 import org.apache.lenya.cms.site.Link;
 
 /**
  * A CMS document.
  * @version $Id$
  */
-public interface Document extends MetaDataOwner, RepositoryItem {
+public interface Document extends Node, MetaDataOwner {
     
     /**
      * The document namespace URI.
@@ -141,8 +138,6 @@
      * area actually exists.
      * 
      * @return true if the document exists, false otherwise
-     * 
-     * @throws DocumentException if an error occurs
      */
     boolean exists();
     
@@ -151,8 +146,6 @@
      * independently of the given language.
      * 
      * @return true if a document with the given document-uuid and area exists, false otherwise
-     * 
-     * @throws DocumentException if an error occurs
      */
     boolean existsInAnyLanguage();
     
@@ -183,11 +176,6 @@
     void delete() throws DocumentException;
     
     /**
-     * @return The repository node that represents this document.
-     */
-    Node getRepositoryNode();
-
-    /**
      * @return The resource type of this document (formerly known as doctype)
      * @throws DocumentException if the resource type has not been set.
      */
@@ -211,7 +199,6 @@
     /**
      * Sets the mime type of this document.
      * @param mimeType The mime type.
-     * @throws DocumentException if an error occurs.
      */
     void setMimeType(String mimeType);
     
@@ -312,13 +299,17 @@
     InputStream getInputStream();
     
     /**
+     * @param i The revision number.
+     * @return A revision.
+     * @throws RepositoryException if the revision doesn't exist.
+     */
+    Document getRevision(int i) throws RepositoryException;
+
+    /**
      * @return The revision number of this document.
      */
     int getRevisionNumber();
+    
+    History getHistory();
 
-    boolean isCheckedOutBySession(Session session) throws RepositoryException;
-
-    void checkin() throws RepositoryException;
-
-    Session getSession();
 }

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java Tue Feb 10 01:34:58 2009
@@ -20,6 +20,8 @@
 
 package org.apache.lenya.cms.publication;
 
+import java.net.MalformedURLException;
+
 /**
  * A document builder builds a document from a URL.
  */
@@ -35,9 +37,9 @@
      * @param factory The factory.
      * @param webappUrl The web application URL.
      * @return A document identifier.
-     * @throws DocumentBuildException if an error occurs.
+     * @throws MalformedURLException if the URL is not a webapp URL. 
      */
-    DocumentLocator getLocator(Session session, String webappUrl) throws DocumentBuildException;
+    DocumentLocator getLocator(Session session, String webappUrl) throws MalformedURLException;
 
     /**
      * Checks if an URL corresponds to a CMS document.
@@ -46,7 +48,7 @@
      * @return A boolean value.
      * @throws DocumentBuildException when something went wrong.
      */
-    boolean isDocument(Session session, String url) throws DocumentBuildException;
+    boolean isDocument(Session session, String url);
 
     /**
      * Builds an URL corresponding to a CMS document.

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,43 @@
+/*
+ * 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;
+
+/**
+ * The revision history of a document.
+ */
+public interface History {
+    
+    /**
+     * @return The available revision numbers in descending order (starting with the newest one).
+     */
+    int[] getRevisionNumbers();
+    
+    /**
+     * @return The latest revision.
+     * @throws RuntimeException if the node has no revisions yet.
+     */
+    Revision getLatestRevision();
+    
+    /**
+     * @param number A revision number.
+     * @return A revision.
+     * @throws RepositoryException if no revision with this number exists.
+     */
+    Revision getRevision(int number) throws RepositoryException;
+
+}

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,5 @@
+package org.apache.lenya.cms.publication;
+
+public class LockException extends RepositoryException {
+
+}

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,53 @@
+/*
+ * 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;
+
+/**
+ * Common interface for documents and site structures. This is a hack, we should try to find a
+ * better approach.
+ */
+public interface Node {
+
+    boolean isCheckedOutBySession(String sessionId, String userId) throws RepositoryException;
+
+    void checkin() throws RepositoryException;
+
+    Session getSession();
+
+    boolean isCheckedOut() throws RepositoryException;
+
+    String getCheckoutUserId() throws RepositoryException;
+
+    void checkout() throws RepositoryException;
+
+    void lock() throws LockException, RepositoryException;
+
+    void unlock() throws RepositoryException;
+
+    void registerDirty() throws RepositoryException;
+
+    boolean isLocked() throws RepositoryException;
+
+    void forceCheckIn() throws RepositoryException;
+
+    void rollback(int revision) throws RepositoryException;
+
+    void checkout(boolean checkoutRestrictedToSession) throws RepositoryException;
+
+    String getSourceURI();
+}

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java Tue Feb 10 01:34:58 2009
@@ -25,7 +25,6 @@
 import org.apache.cocoon.environment.Request;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.lenya.cms.rc.RCEnvironment;
 
 /**
  * A page envelope carries a set of information that are needed during the presentation of a
@@ -251,17 +250,6 @@
     }
 
     /**
-     * Returns the rcEnvironment.
-     * 
-     * @return a <code>RCEnvironment</code> value
-     * @deprecated We should detach the RC environment from the page envelope.
-     */
-    public RCEnvironment getRCEnvironment() {
-        return RCEnvironment.getInstance(getPublication().getServletContext().getAbsolutePath(),
-                logger);
-    }
-
-    /**
      * Returns the context, e.g. "/lenya".
      * @return a <code>String</code> value
      */

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java Tue Feb 10 01:34:58 2009
@@ -36,7 +36,7 @@
      * @throws DocumentDoesNotExistException if there is no document associated with this file.
      */
     String getDocumentId(Publication publication, String area, File file)
-        throws DocumentDoesNotExistException;
+        throws ResourceNotFoundException;
         
     /**
      * Returns the language for a given file

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java Tue Feb 10 01:34:58 2009
@@ -20,8 +20,6 @@
 
 package org.apache.lenya.cms.publication;
 
-import org.apache.lenya.cms.repository.RepositoryException;
-
 /**
  * Publication Exception
  */

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,40 @@
+/*
+ * 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;
+
+public class RepositoryException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    public RepositoryException() {
+        super();
+    }
+
+    public RepositoryException(String arg0, Throwable arg1) {
+        super(arg0, arg1);
+    }
+
+    public RepositoryException(String arg0) {
+        super(arg0);
+    }
+
+    public RepositoryException(Throwable arg0) {
+        super(arg0);
+    }
+
+}

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,20 @@
+package org.apache.lenya.cms.publication;
+
+public interface Revision {
+
+    /**
+     * @return The revision number.
+     */
+    int getNumber();
+    
+    /**
+     * @return The time when this revision was created.
+     */
+    long getTime();
+    
+    /**
+     * @return The ID of the user who created this revision.
+     */
+    String getUserId();
+    
+}

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java Tue Feb 10 01:34:58 2009
@@ -18,8 +18,6 @@
 package org.apache.lenya.cms.publication;
 
 import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.transaction.ConcurrentModificationException;
 
 public interface Session {
     
@@ -38,7 +36,7 @@
 
     Identity getIdentity();
 
-    void commit() throws RepositoryException, ConcurrentModificationException;
+    void commit() throws RepositoryException;
 
     void rollback() throws RepositoryException;
 
@@ -46,4 +44,8 @@
 
     UriHandler getUriHandler();
 
+    void enqueueEvent(Document document, Object descriptor);
+
+    String getId();
+
 }

Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * Global transaction lock.
+ */
+public class TransactionLock {
+
+    /**
+     * The global transaction lock.
+     */
+    public static final Object LOCK = TransactionLock.class;
+    
+}

Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java Tue Feb 10 01:34:58 2009
@@ -18,21 +18,15 @@
 package org.apache.lenya.cms.site;
 
 import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.Node;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryItem;
 
 /**
  * Object to hold a site structure information.
  * 
  * @version $Id$
  */
-public interface SiteStructure extends RepositoryItem {
-
-    /**
-     * @return The repository node the site structure is stored in.
-     */
-    Node getRepositoryNode();
+public interface SiteStructure extends Node {
 
     /**
      * @return The publication.

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=742811&r1=742810&r2=742811&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 Tue Feb 10 01:34:58 2009
@@ -29,14 +29,12 @@
 
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.lenya.ac.Identity;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.workflow.Version;
 import org.apache.lenya.workflow.Workflow;
 import org.apache.lenya.workflow.Workflowable;
@@ -47,6 +45,8 @@
  * @version $Id: DocumentWorkflowable.java 416648 2006-06-23 09:15:28Z andreas $
  */
 class DocumentWorkflowable extends AbstractLogEnabled implements Workflowable {
+    
+    private static final Log logger = LogFactory.getLog(DocumentWorkflowable.class);
 
     /**
      * Ctor.
@@ -54,21 +54,11 @@
      * @param document The document.
      * @param logger The logger.
      */
-    public DocumentWorkflowable(Document document, Log logger) {
-        if (session.getIdentity() == null) {
+    public DocumentWorkflowable(Document document) {
+        if (document.getSession().getIdentity() == null) {
             throw new IllegalArgumentException("The session must have an identity.");
         }
         this.document = document;
-        this.session = session;
-    }
-
-    private Session session;
-
-    /**
-     * @return The repository session.
-     */
-    public Session getSession() {
-        return session;
     }
 
     private Document document;
@@ -99,6 +89,10 @@
 
     protected static final String METADATA_NAMESPACE = "http://apache.org/lenya/metadata/workflow/1.0";
     protected static final String METADATA_VERSION = "workflowVersion";
+    
+    protected int getLatestRevision(int[] revisions) {
+        return revisions[revisions.length - 1];
+    }
 
     /**
      * @see org.apache.lenya.workflow.Workflowable#getVersions()
@@ -107,11 +101,10 @@
         try {
             MetaData meta = this.document.getMetaData(METADATA_NAMESPACE);
 
-            org.apache.lenya.cms.repository.History history = this.document.getRepositoryNode()
-                    .getHistory();
-            boolean checkedIn = history.getRevisionNumbers().length > 0;
+            int[] revisions = getDocument().getHistory().getRevisionNumbers();
+            boolean checkedIn = revisions.length > 0;
             if (this.versions == null
-                    || (checkedIn && history.getLatestRevision().getNumber() > this.revision)) {
+                    || (checkedIn && getLatestRevision(revisions) > this.revision)) {
                 String[] versionStrings = meta.getValues(METADATA_VERSION);
                 this.versions = new Version[versionStrings.length];
 
@@ -135,7 +128,7 @@
                 }
 
                 if (checkedIn) {
-                    this.revision = history.getLatestRevision().getNumber();
+                    this.revision = getLatestRevision(revisions);
                 }
             }
         } catch (Exception e) {
@@ -173,9 +166,7 @@
         addToMetaData(string);
 
         WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
-        RepositoryEvent event = RepositoryEventFactory.createEvent(getDocument(),
-                getLogger(), descriptor);
-        getDocument().getRepositoryNode().getRepositorySession().enqueueEvent(event);
+        getDocument().getSession().enqueueEvent(getDocument(), descriptor);
     }
 
     protected void addToMetaData(String versionString) {
@@ -198,7 +189,7 @@
         StringBuffer stringBuf = new StringBuffer("event:").append(version.getEvent());
         stringBuf.append(" state:").append(version.getState());
 
-        Identity identity = getSession().getIdentity();
+        Identity identity = getDocument().getSession().getIdentity();
         User user = identity.getUser();
         if (user != null) {
             stringBuf.append(" user:").append(identity.getUser().getId());

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=742811&r1=742810&r2=742811&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 Tue Feb 10 01:34:58 2009
@@ -83,7 +83,7 @@
             accessController = acResolver.resolveAccessController(url);
 
             PolicyManager policyManager = accessController.getPolicyManager();
-            Identity identity = workflowable.getSession().getIdentity();
+            Identity identity = workflowable.getDocument().getSession().getIdentity();
             if (identity == null) {
                 throw new IllegalArgumentException("The session of the workflowable "
                         + workflowable + " has no identity.");

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=742811&r1=742810&r2=742811&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 Tue Feb 10 01:34:58 2009
@@ -18,10 +18,9 @@
 package org.apache.lenya.cms.workflow;
 
 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.Session;
 import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.workflow.Workflow;
 import org.apache.lenya.workflow.WorkflowException;
 import org.apache.lenya.workflow.WorkflowManager;
@@ -37,21 +36,18 @@
     /**
      * Invokes a workflow event on a document. This is the same as
      * <code>invoke(Document, String, true)</code>.
-     * @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(Log logger, Document document, String event) throws WorkflowException {
+    public static void invoke(Document document, String event) throws WorkflowException {
         WorkflowManager wfManager = getWorkflowManager();
-        Workflowable workflowable = getWorkflowable(logger, document);
+        Workflowable workflowable = getWorkflowable(document);
         wfManager.invoke(workflowable, event);
-
     }
 
     /**
      * Invokes a workflow event on a document.
-     * @param logger The logger.
      * @param document The document.
      * @param event The name of the event.
      * @param force If this is set to <code>true</code>, the execution is forced, which means an
@@ -59,16 +55,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(Log logger, Document document, String event, boolean force)
+    public static void invoke(Document document, String event, boolean force)
             throws WorkflowException {
         WorkflowManager wfManager = getWorkflowManager();
-        Workflowable workflowable = getWorkflowable(logger, document);
+        Workflowable workflowable = getWorkflowable(document);
         wfManager.invoke(workflowable, event, force);
     }
 
     /**
      * Invokes a workflow event on a document set.
-     * @param logger The logger.
      * @param documentSet The document.
      * @param event The event.
      * @param force If this is set to <code>true</code>, the execution is forced, which means an
@@ -77,12 +72,12 @@
      * @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(Log logger, DocumentSet documentSet, String event, boolean force)
+    public static void invoke(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);
+            Workflowable workflowable = new DocumentWorkflowable(documents[i]);
             wfManager.invoke(workflowable, event, force);
         }
     }
@@ -94,35 +89,33 @@
 
     /**
      * Checks if an event can be invoked on a document.
-     * @param logger The logger.
      * @param document The document.
      * @param event The event.
      * @return A boolean value.
      * @throws WorkflowException
      */
-    public static boolean canInvoke(Log logger, Document document, String event)
+    public static boolean canInvoke(Document document, String event)
             throws WorkflowException {
-        Workflowable workflowable = new DocumentWorkflowable(document, logger);
+        Workflowable workflowable = new DocumentWorkflowable(document);
         return getWorkflowManager().canInvoke(workflowable, event);
     }
 
     /**
      * Checks if an event can be invoked on all documents in a set.
      * @param session The repository session.
-     * @param logger The logger.
      * @param documents The documents.
      * @param event The event.
      * @return if an error occurs.
      * @throws WorkflowException
      */
-    public static boolean canInvoke(Session session, Log logger, DocumentSet documents, String event)
+    public static boolean canInvoke(Session session, 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);
+            Workflowable workflowable = new DocumentWorkflowable(documentArray[i]);
             canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
         }
         return canInvoke;
@@ -135,8 +128,8 @@
      * @return A boolean value.
      * @throws WorkflowException if an error occurs.
      */
-    public static boolean hasWorkflow(Log logger, Document document) throws WorkflowException {
-        Workflowable workflowable = new DocumentWorkflowable(document, logger);
+    public static boolean hasWorkflow(Document document) throws WorkflowException {
+        Workflowable workflowable = new DocumentWorkflowable(document);
         return getWorkflowManager().hasWorkflow(workflowable);
     }
 
@@ -147,10 +140,10 @@
      * @return A workflow schema.
      * @throws WorkflowException if an error occurs.
      */
-    public static Workflow getWorkflowSchema(Log logger, Document document)
+    public static Workflow getWorkflowSchema(Document document)
             throws WorkflowException {
         WorkflowManager wfManager = getWorkflowManager();
-        Workflowable workflowable = getWorkflowable(logger, document);
+        Workflowable workflowable = getWorkflowable(document);
         if (wfManager.hasWorkflow(workflowable)) {
             return wfManager.getWorkflowSchema(workflowable);
         } else {
@@ -164,8 +157,8 @@
      * @param document The document.
      * @return A workflowable.
      */
-    public static Workflowable getWorkflowable(Log logger, Document document) {
-        return new DocumentWorkflowable(document, logger);
+    public static Workflowable getWorkflowable(Document document) {
+        return new DocumentWorkflowable(document);
     }
 
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.core.impl/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/pom.xml?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.impl/pom.xml Tue Feb 10 01:34:58 2009
@@ -35,16 +35,24 @@
       
   <dependencies>
     <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.avalon.framework</groupId>
       <artifactId>avalon-framework-api</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.cocoon</groupId>
+      <artifactId>cocoon-core</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
+      <groupId>org.apache.lenya</groupId>
+      <artifactId>lenya-core-repository</artifactId>
     </dependency>
     
     <!-- Tests -->

Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,71 @@
+/*
+ * 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.metadata;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.lenya.cms.repository.metadata.ElementSet;
+import org.apache.lenya.cms.repository.metadata.MetaDataException;
+
+public class ElementSetWrapper implements org.apache.lenya.cms.metadata.ElementSet {
+
+    private org.apache.lenya.cms.repository.metadata.ElementSet delegate;
+    private Map<String, ElementWrapper> elements = new HashMap<String, ElementWrapper>();
+
+    public ElementSetWrapper(ElementSet delegate) {
+        super();
+        this.delegate = delegate;
+    }
+
+    public boolean containsElement(String name) {
+        return this.delegate.containsElement(name);
+    }
+
+    public Element getElement(String name) throws org.apache.lenya.cms.metadata.MetaDataException {
+        ElementWrapper wrapper = this.elements.get(name);
+        if (wrapper == null) {
+            try {
+                wrapper = new ElementWrapper(this.delegate.getElement(name));
+            } catch (MetaDataException e) {
+                throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+            }
+            this.elements.put(name, wrapper);
+        }
+        return wrapper;
+    }
+
+    public Element[] getElements() {
+        org.apache.lenya.cms.repository.metadata.Element[] elements = this.delegate.getElements();
+        Element[] wrappers = new Element[elements.length];
+        for (int i = 0; i < elements.length; i++) {
+            try {
+                wrappers[i] = getElement(elements[i].getName());
+            } catch (org.apache.lenya.cms.metadata.MetaDataException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return wrappers;
+    }
+
+    public String getNamespaceUri() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,54 @@
+/*
+ * 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.metadata;
+
+import org.apache.lenya.cms.repository.metadata.Element;
+
+public class ElementWrapper implements org.apache.lenya.cms.metadata.Element {
+    
+    private org.apache.lenya.cms.repository.metadata.Element delegate;
+
+    public ElementWrapper(Element delegate) {
+        this.delegate = delegate;
+    }
+
+    public int getActionOnCopy() {
+        return this.delegate.getActionOnCopy();
+    }
+
+    public String getDescription() {
+        return this.delegate.getDescription();
+    }
+
+    public String getName() {
+        return this.delegate.getName();
+    }
+
+    public boolean isEditable() {
+        return this.delegate.isEditable();
+    }
+
+    public boolean isMultiple() {
+        return this.delegate.isMultiple();
+    }
+
+    public boolean isSearchable() {
+        return this.delegate.isSearchable();
+    }
+
+}

Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java Tue Feb 10 01:34:58 2009
@@ -19,6 +19,9 @@
 
 import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.excalibur.store.impl.MRUMemoryStore;
+import org.apache.lenya.cms.metadata.CacheableMetaData;
+import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.metadata.MetaDataException;
 
 /**
  * Cache for meta data.

Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,127 @@
+/*
+ * 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.metadata;
+
+import org.apache.lenya.cms.repository.metadata.MetaDataException;
+
+public class MetaDataWrapper implements MetaData {
+
+    private org.apache.lenya.cms.repository.metadata.MetaData delegate;
+
+    public MetaDataWrapper(org.apache.lenya.cms.repository.metadata.MetaData delegate) {
+        this.delegate = delegate;
+    }
+
+    protected org.apache.lenya.cms.repository.metadata.MetaData getDelegate() {
+        return this.delegate;
+    }
+
+    public void addValue(String key, String value)
+            throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            this.delegate.addValue(key, value);
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+    }
+
+    public void forcedReplaceBy(MetaData other)
+            throws org.apache.lenya.cms.metadata.MetaDataException {
+        MetaDataWrapper wrapper = (MetaDataWrapper) other;
+        try {
+            this.delegate.forcedReplaceBy(wrapper.getDelegate());
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+    }
+
+    public String[] getAvailableKeys() {
+        return this.delegate.getAvailableKeys();
+    }
+
+    private ElementSet elements;
+
+    public ElementSet getElementSet() {
+        if (this.elements == null) {
+            this.elements = new ElementSetWrapper(this.delegate.getElementSet());
+        }
+        return this.elements;
+    }
+
+    public String getFirstValue(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            return this.delegate.getFirstValue(key);
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+    }
+
+    public long getLastModified() throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            return this.delegate.getLastModified();
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+    }
+
+    public String[] getPossibleKeys() {
+        return this.delegate.getPossibleKeys();
+    }
+
+    public String[] getValues(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            return this.delegate.getValues(key);
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+    }
+
+    public boolean isValidAttribute(String key) {
+        return this.delegate.isValidAttribute(key);
+    }
+
+    public void removeAllValues(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            this.delegate.removeAllValues(key);
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+
+    }
+
+    public void replaceBy(MetaData other) throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            MetaDataWrapper wrapper = (MetaDataWrapper) other;
+            this.delegate.replaceBy(wrapper.getDelegate());
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+
+    }
+
+    public void setValue(String key, String value)
+            throws org.apache.lenya.cms.metadata.MetaDataException {
+        try {
+            this.delegate.setValue(key, value);
+        } catch (MetaDataException e) {
+            throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+        }
+
+    }
+
+}



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