svn commit: r633542 - in /lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository: ModifiableMetaDataHandler.java SourceNode.java SourceNodeMetaDataHandler.java SourceNodeRevision.java SourceWrapper.java

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
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;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.