Hi Jann,

Jann Forrer schrieb:
Hi andreas

The export.importContent usecase does not work after this commit. It
throws a RepositoryException:

Exception during commit or rollback:
org.apache.lenya.cms.repository.RepositoryException: The node [node
lenya://lenya/pubs/default/content/authoring/sitetree.xml] hasn't been
checked in yet.

That might be due to getRcml().getLatestCheckInEntry(); because no rcml
entry exist at that time.

thanks for the pointer! I removed the code from SiteTreeImpl since the usage was commented out anyway.

-- Andreas


Jann


Author: andreas
Date: Tue Mar  4 08:46:08 2008
New Revision: 633542

URL: http://svn.apache.org/viewvc?rev=633542&view=rev
Log:
Source node meta data: obtain last modification date from RCML instead of 
source (much cheaper).

Modified:
    
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
    
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
    
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
    
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
    
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java

Modified: 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java?rev=633542&r1=633541&r2=633542&view=diff
==============================================================================
--- 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
 (original)
+++ 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/ModifiableMetaDataHandler.java
 Tue Mar  4 08:46:08 2008
@@ -42,7 +42,7 @@
      * @param sourceWrapper The source wrapper.
      */
     public ModifiableMetaDataHandler(ServiceManager manager, MetaSourceWrapper 
sourceWrapper) {
-        super(manager, sourceWrapper.getRealSourceUri());
+        super(manager, sourceWrapper.getRealSourceUri(), 
sourceWrapper.getNode());
         this.sourceWrapper = sourceWrapper;
         try {
             this.sourceWrapper.getNode().setPersistable(this);

Modified: 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java?rev=633542&r1=633541&r2=633542&view=diff
==============================================================================
--- 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
 (original)
+++ 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
 Tue Mar  4 08:46:08 2008
@@ -409,18 +409,17 @@
     }
public long getLastModified() throws RepositoryException {
-
-        if (!exists()) {
-            throw new RepositoryException("The node [" + this + "] does not 
exist!");
-        }
-
-        long contentLastModified = this.contentSource.getLastModified();
-        long metaLastModified = 0;
-        if (this.metaSource.exists()) {
-            metaLastModified = this.metaSource.getLastModified();
+        try {
+            CheckInEntry entry = getRcml().getLatestCheckInEntry();
+            if (entry != null) {
+                return entry.getTime();
+            }
+            else {
+                throw new RepositoryException("The node [" + this + "] hasn't been 
checked in yet.");
+            }
+        } catch (RevisionControlException e) {
+            throw new RepositoryException(e);
         }
-
-        return Math.max(contentLastModified, metaLastModified);
     }
public String getMimeType() throws RepositoryException {
@@ -498,6 +497,10 @@
public Persistable getPersistable() {
         return this.persistable;
+    }
+
+    public String getCacheKey() {
+        return getSourceURI();
     }
}

Modified: 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java?rev=633542&r1=633541&r2=633542&view=diff
==============================================================================
--- 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
 (original)
+++ 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaDataHandler.java
 Tue Mar  4 08:46:08 2008
@@ -43,15 +43,18 @@
 public class SourceNodeMetaDataHandler implements MetaDataOwner {
private ServiceManager manager;
+    private ContentHolder content;
     private String sourceUri;
/**
      * @param manager The service manager.
-     * @param sourceUri The soure URI.
+     * @param sourceUri The source URI.
+     * @param content The content these meta data apply for.
      */
-    public SourceNodeMetaDataHandler(ServiceManager manager, String sourceUri) 
{
+    public SourceNodeMetaDataHandler(ServiceManager manager, String sourceUri, 
ContentHolder content) {
         this.manager = manager;
         this.sourceUri = sourceUri;
+        this.content = content;
     }
private Map namespace2metadata = new HashMap();
@@ -259,11 +262,7 @@
     }
protected long getLastModified() throws RepositoryException {
-        try {
-            return SourceUtil.getLastModified(this.sourceUri, this.manager);
-        } catch (Exception e) {
-            throw new RepositoryException(e);
-        }
+        return this.content.getLastModified();
     }
}

Modified: 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java?rev=633542&r1=633541&r2=633542&view=diff
==============================================================================
--- 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
 (original)
+++ 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRevision.java
 Tue Mar  4 08:46:08 2008
@@ -131,7 +131,7 @@
protected SourceNodeMetaDataHandler getMetaDataHandler() {
         if (this.metaDataHandler == null) {
-            this.metaDataHandler = new SourceNodeMetaDataHandler(this.manager, 
getMetaSourceUri());
+            this.metaDataHandler = new SourceNodeMetaDataHandler(this.manager, 
getMetaSourceUri(), this);
         }
         return this.metaDataHandler;
     }

Modified: 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
URL: 
http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java?rev=633542&r1=633541&r2=633542&view=diff
==============================================================================
--- 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
 (original)
+++ 
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceWrapper.java
 Tue Mar  4 08:46:08 2008
@@ -24,7 +24,6 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
-import java.util.Date;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -39,8 +38,6 @@
 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.rc.CheckInEntry;
-import org.apache.lenya.cms.rc.RevisionControlException;
 import org.apache.lenya.util.Assert;
/**
@@ -348,7 +345,6 @@
          */
         public synchronized void close() throws IOException {
             SourceWrapper.this.data = super.toByteArray();
-            SourceWrapper.this.lastModified = new Date().getTime();
             try {
                 SourceWrapper.this.getNode().registerDirty();
             } catch (RepositoryException e) {
@@ -366,25 +362,6 @@
     public long getContentLength() throws RepositoryException {
         loadData();
         return this.data.length;
-    }
-
-    private long lastModified = -1;
-
-    /**
-     * @return The last modification date.
-     * @throws RepositoryException if an error occurs.
-     * @see org.apache.lenya.cms.repository.Node#getLastModified()
-     */
-    public long getLastModified() throws RepositoryException {
-        try {
-            CheckInEntry entry = this.node.getRcml().getLatestCheckInEntry();
-            if (entry != null) {
-                this.lastModified = entry.getTime();
-            }
-        } catch (RevisionControlException e) {
-            throw new RepositoryException(e);
-        }
-        return this.lastModified;
     }
private String mimeType;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to