You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lenya.apache.org by Jann Forrer <ja...@id.uzh.ch> on 2008/03/05 16:44:20 UTC

Re: 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

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.

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: commits-unsubscribe@lenya.apache.org
> For additional commands, e-mail: commits-help@lenya.apache.org
> 


-- 
Jann Forrer
Informatikdienste
Universität Zürich
Winterthurerstr. 190
CH-8057 Zürich

oooO   mail:  jann.forrer@id.uzh.ch
(  )   phone: +41 44 63 56772
 \ (   fax:   +41 44 63 54505
  \_)  http://www.id.unizh.ch


Re: 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

Posted by Andreas Hartmann <an...@apache.org>.
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: commits-unsubscribe@lenya.apache.org
>> For additional commands, e-mail: commits-help@lenya.apache.org
>>
> 
> 


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


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