You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2010/03/25 11:42:34 UTC

svn commit: r927337 - in /incubator/chemistry/trunk/opencmis: opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/ opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/ opencmis-client/openc...

Author: fmui
Date: Thu Mar 25 10:42:34 2010
New Revision: 927337

URL: http://svn.apache.org/viewvc?rev=927337&view=rev
Log:
straightened version handling on client and server (related to CMIS-181)
added some object caching improvements
some cleanups

Modified:
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/atompub/VersioningServiceImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/webservices/VersioningServiceImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadOnlyTests.java
    incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadWriteTests.java
    incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-api/src/main/java/org/apache/opencmis/commons/provider/VersioningService.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/DocumentInfo.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/FolderInfo.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/AtomPubUtils.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/VersioningService.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/test/java/org/apache/opencmis/server/impl/AtomEntryParserTest.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfo.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfoImpl.java
    incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-support/src/main/java/org/apache/opencmis/server/support/ObjectInfoHelper.java

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-api/src/main/java/org/apache/opencmis/client/api/CmisObject.java Thu Mar 25 10:42:34 2010
@@ -160,14 +160,23 @@ public interface CmisObject extends Obje
   // session handling
 
   /**
-   * returns true, if this object has pending changes which are not synced with the backend.
-   * 
-   * @return
+   * Returns true, if this object has pending changes which are not synced with the backend.
    */
   boolean isChanged();
 
   /**
+   * Returns the timestamp (in milliseconds) of the last refresh.
+   */
+  long getRefreshTimestamp();
+
+  /**
    * Reloads the data from the repository.
    */
   void refresh();
+
+  /**
+   * Reloads the data from the repository if the last refresh did not occur within
+   * <code>durationInMillis</code>.
+   */
+  void refreshIfOld(long durationInMillis);
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/AbstractPersistentCmisObject.java Thu Mar 25 10:42:34 2010
@@ -72,6 +72,7 @@ public abstract class AbstractPersistent
   private List<Relationship> relationships;
   private OperationContext creationContext;
   private boolean isChanged = false;
+  private long refreshTimestamp;
 
   private final ReentrantReadWriteLock fLock = new ReentrantReadWriteLock();
 
@@ -820,6 +821,21 @@ public abstract class AbstractPersistent
   /*
    * (non-Javadoc)
    * 
+   * @see org.apache.opencmis.client.api.CmisObject#getRefreshTimestamp()
+   */
+  public long getRefreshTimestamp() {
+    readLock();
+    try {
+      return this.refreshTimestamp;
+    }
+    finally {
+      readUnlock();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
    * @see
    * org.apache.opencmis.client.api.CmisObject#refresh(org.apache.opencmis.client.api.OperationContext
    * )
@@ -844,6 +860,23 @@ public abstract class AbstractPersistent
     }
   }
 
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.api.CmisObject#refreshIfOld(long)
+   */
+  public void refreshIfOld(long durationInMillis) {
+    writeLock();
+    try {
+      if (this.refreshTimestamp < System.currentTimeMillis() - durationInMillis) {
+        refresh();
+      }
+    }
+    finally {
+      writeUnlock();
+    }
+  }
+
   // --- internal ---
 
   /**

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-client-impl/src/main/java/org/apache/opencmis/client/runtime/PersistentDocumentImpl.java Thu Mar 25 10:42:34 2010
@@ -205,9 +205,10 @@ public class PersistentDocumentImpl exte
    */
   public List<Document> getAllVersions(OperationContext context) {
     String objectId = getObjectId();
+    String versionSeriesId = getVersionSeriesId();
 
     List<ObjectData> versions = getProvider().getVersioningService().getAllVersions(
-        getRepositoryId(), objectId, context.getFilterString(),
+        getRepositoryId(), objectId, versionSeriesId, context.getFilterString(),
         context.isIncludeAllowableActions(), null);
 
     ObjectFactory objectFactory = getSession().getObjectFactory();

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/atompub/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/atompub/VersioningServiceImpl.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/atompub/VersioningServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/atompub/VersioningServiceImpl.java Thu Mar 25 10:42:34 2010
@@ -35,6 +35,7 @@ import org.apache.opencmis.commons.api.E
 import org.apache.opencmis.commons.enums.IncludeRelationships;
 import org.apache.opencmis.commons.exceptions.CmisConnectionException;
 import org.apache.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.opencmis.commons.exceptions.CmisNotSupportedException;
 import org.apache.opencmis.commons.exceptions.CmisObjectNotFoundException;
 import org.apache.opencmis.commons.impl.Constants;
 import org.apache.opencmis.commons.impl.ReturnVersion;
@@ -246,20 +247,35 @@ public class VersioningServiceImpl exten
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.provider.VersioningService#getAllVersions(java.lang.String,
+   * @see org.apache.opencmis.commons.provider.VersioningService#getAllVersions(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.Boolean,
-   * org.apache.opencmis.client.provider.ExtensionsData)
+   * org.apache.opencmis.commons.api.ExtensionsData)
    */
   public List<ObjectData> getAllVersions(String repositoryId, String versionSeriesId,
       String filter, Boolean includeAllowableActions, ExtensionsData extension) {
+    throw new CmisNotSupportedException("Not supported by Atom binding! "
+        + "Use 'getAllVersions(String repositoryId, String objectId, String versionSeriesId, "
+        + "String filter, Boolean includeAllowableActions, ExtensionsData extension)' instead!'");
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.apache.opencmis.client.provider.VersioningService#getAllVersions(java.lang.String,
+   * java.lang.String, java.lang.String, java.lang.Boolean,
+   * org.apache.opencmis.client.provider.ExtensionsData)
+   */
+  public List<ObjectData> getAllVersions(String repositoryId, String objectId,
+      String versionSeriesId, String filter, Boolean includeAllowableActions,
+      ExtensionsData extension) {
     List<ObjectData> result = new ArrayList<ObjectData>();
 
     // find the link
-    String link = loadLink(repositoryId, versionSeriesId, Constants.REL_VERSIONHISTORY,
+    String link = loadLink(repositoryId, objectId, Constants.REL_VERSIONHISTORY,
         Constants.MEDIATYPE_FEED);
 
     if (link == null) {
-      throwLinkException(repositoryId, versionSeriesId, Constants.REL_VERSIONHISTORY,
+      throwLinkException(repositoryId, objectId, Constants.REL_VERSIONHISTORY,
           Constants.MEDIATYPE_FEED);
     }
 
@@ -350,5 +366,4 @@ public class VersioningServiceImpl exten
 
     return object.getProperties();
   }
-
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/webservices/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/webservices/VersioningServiceImpl.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/webservices/VersioningServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/main/java/org/apache/opencmis/client/provider/spi/webservices/VersioningServiceImpl.java Thu Mar 25 10:42:34 2010
@@ -120,9 +120,11 @@ public class VersioningServiceImpl exten
    * 
    * @see org.apache.opencmis.client.provider.VersioningService#checkIn(java.lang.String,
    * org.apache.opencmis.client.provider.Holder, java.lang.Boolean,
-   * org.apache.opencmis.client.provider.PropertiesData, org.apache.opencmis.client.provider.ContentStreamData,
-   * java.lang.String, java.util.List, org.apache.opencmis.client.provider.AccessControlList,
-   * org.apache.opencmis.client.provider.AccessControlList, org.apache.opencmis.client.provider.ExtensionsData)
+   * org.apache.opencmis.client.provider.PropertiesData,
+   * org.apache.opencmis.client.provider.ContentStreamData, java.lang.String, java.util.List,
+   * org.apache.opencmis.client.provider.AccessControlList,
+   * org.apache.opencmis.client.provider.AccessControlList,
+   * org.apache.opencmis.client.provider.ExtensionsData)
    */
   public void checkIn(String repositoryId, Holder<String> objectId, Boolean major,
       PropertiesData properties, ContentStreamData contentStream, String checkinComment,
@@ -151,6 +153,19 @@ public class VersioningServiceImpl exten
   /*
    * (non-Javadoc)
    * 
+   * @see org.apache.opencmis.commons.provider.VersioningService#getAllVersions(java.lang.String,
+   * java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean,
+   * org.apache.opencmis.commons.api.ExtensionsData)
+   */
+  public List<ObjectData> getAllVersions(String repositoryId, String objectId,
+      String versionSeriesId, String filter, Boolean includeAllowableActions,
+      ExtensionsData extension) {
+    return getAllVersions(repositoryId, versionSeriesId, filter, includeAllowableActions, extension);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
    * @see org.apache.opencmis.client.provider.VersioningService#getAllVersions(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.Boolean,
    * org.apache.opencmis.client.provider.ExtensionsData)
@@ -187,8 +202,9 @@ public class VersioningServiceImpl exten
   /*
    * (non-Javadoc)
    * 
-   * @see org.apache.opencmis.client.provider.VersioningService#getObjectOfLatestVersion(java.lang.String,
-   * java.lang.String, java.lang.Boolean, java.lang.String, java.lang.Boolean,
+   * @see
+   * org.apache.opencmis.client.provider.VersioningService#getObjectOfLatestVersion(java.lang.String
+   * , java.lang.String, java.lang.Boolean, java.lang.String, java.lang.Boolean,
    * org.apache.opencmis.commons.enums.IncludeRelationships, java.lang.String, java.lang.Boolean,
    * java.lang.Boolean, org.apache.opencmis.client.provider.ExtensionsData)
    */
@@ -215,8 +231,8 @@ public class VersioningServiceImpl exten
    * (non-Javadoc)
    * 
    * @see
-   * org.apache.opencmis.client.provider.VersioningService#getPropertiesOfLatestVersion(java.lang.String,
-   * java.lang.String, java.lang.Boolean, java.lang.String,
+   * org.apache.opencmis.client.provider.VersioningService#getPropertiesOfLatestVersion(java.lang
+   * .String, java.lang.String, java.lang.Boolean, java.lang.String,
    * org.apache.opencmis.client.provider.ExtensionsData)
    */
   public PropertiesData getPropertiesOfLatestVersion(String repositoryId, String VersionSeriesId,

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadOnlyTests.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadOnlyTests.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadOnlyTests.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadOnlyTests.java Thu Mar 25 10:42:34 2010
@@ -528,7 +528,7 @@ public abstract class AbstractSimpleRead
         PropertyIds.CMIS_BASE_TYPE_ID).getFirstValue();
     if (isVersionable(typeName)) {
       List<ObjectData> allVersions = getProvider().getVersioningService().getAllVersions(
-          getTestRepositoryId(), versionSeriesId, "*", Boolean.FALSE, null);
+          getTestRepositoryId(), objectId, versionSeriesId, "*", Boolean.FALSE, null);
       assertNotNull(allVersions);
       assertTrue(allVersions.size() > 0);
 

Modified: incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadWriteTests.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadWriteTests.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadWriteTests.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-client/opencmis-provider-impl/src/test/java/org/apache/opencmis/client/provider/framework/AbstractSimpleReadWriteTests.java Thu Mar 25 10:42:34 2010
@@ -365,7 +365,7 @@ public abstract class AbstractSimpleRead
 
     // there must be only one version in the version series
     List<ObjectData> allVersions = getProvider().getVersioningService().getAllVersions(
-        getTestRepositoryId(), getVersionSeriesId(docId), "*", Boolean.FALSE, null);
+        getTestRepositoryId(), docId, getVersionSeriesId(docId), "*", Boolean.FALSE, null);
     assertNotNull(allVersions);
     assertEquals(1, allVersions.size());
 
@@ -404,7 +404,7 @@ public abstract class AbstractSimpleRead
     assertFalse(isCheckedOut(docId));
 
     // there must be exactly two versions in the version series
-    allVersions = getProvider().getVersioningService().getAllVersions(getTestRepositoryId(),
+    allVersions = getProvider().getVersioningService().getAllVersions(getTestRepositoryId(), docId,
         getVersionSeriesId(docId), "*", Boolean.FALSE, null);
     assertNotNull(allVersions);
     assertEquals(2, allVersions.size());

Modified: incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-api/src/main/java/org/apache/opencmis/commons/provider/VersioningService.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-api/src/main/java/org/apache/opencmis/commons/provider/VersioningService.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-api/src/main/java/org/apache/opencmis/commons/provider/VersioningService.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-commons/opencmis-commons-api/src/main/java/org/apache/opencmis/commons/provider/VersioningService.java Thu Mar 25 10:42:34 2010
@@ -50,7 +50,11 @@ public interface VersioningService {
   public PropertiesData getPropertiesOfLatestVersion(String repositoryId, String versionSeriesId,
       Boolean major, String filter, ExtensionsData extension);
 
+  public List<ObjectData> getAllVersions(String repositoryId, String objectId,
+      String versionSeriesId, String filter, Boolean includeAllowableActions,
+      ExtensionsData extension);
+
+  @Deprecated
   public List<ObjectData> getAllVersions(String repositoryId, String versionSeriesId,
       String filter, Boolean includeAllowableActions, ExtensionsData extension);
-
 }

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/DocumentInfo.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/DocumentInfo.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/DocumentInfo.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/DocumentInfo.java Thu Mar 25 10:42:34 2010
@@ -28,7 +28,7 @@ public class DocumentInfo extends Object
     setHasAcl(true);
     setHasContent(true);
     setHasParent(true);
-    setHasVersionHistory(false);
+    setVersionSeriesId(null);
     setIsCurrentVersion(true);
     setRelationshipSourceIds(null);
     setRelationshipTargetIds(null);

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/FolderInfo.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/FolderInfo.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/FolderInfo.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-fileshare/src/main/java/org/apache/opencmis/fileshare/FolderInfo.java Thu Mar 25 10:42:34 2010
@@ -29,7 +29,7 @@ public class FolderInfo extends ObjectIn
     setFileName(null);
     setHasAcl(true);
     setHasContent(false);
-    setHasVersionHistory(false);
+    setVersionSeriesId(null);
     setIsCurrentVersion(true);
     setRelationshipSourceIds(null);
     setRelationshipTargetIds(null);

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/AtomPubUtils.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/AtomPubUtils.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/AtomPubUtils.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/AtomPubUtils.java Thu Mar 25 10:42:34 2010
@@ -321,8 +321,9 @@ public final class AtomPubUtils {
       }
     }
 
-    if (info.hasVersionHistory()) {
-      entry.writeVersionHistoryLink(compileUrl(baseUrl, RESOURCE_VERSIONS, info.getId()));
+    if (info.getVersionSeriesId() != null) {
+      entry.writeVersionHistoryLink(compileUrl(baseUrl, RESOURCE_VERSIONS, info
+          .getVersionSeriesId()));
     }
 
     if (!info.isCurrentVersion()) {

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/VersioningService.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/VersioningService.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/VersioningService.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/main/java/org/apache/opencmis/server/impl/atompub/VersioningService.java Thu Mar 25 10:42:34 2010
@@ -101,23 +101,23 @@ public class VersioningService {
     CmisVersioningService service = factory.getVersioningService();
 
     // get parameters
-    String objectId = getStringParameter(request, Constants.PARAM_ID);
+    String versionSeriesId = getStringParameter(request, Constants.PARAM_ID);
     String filter = getStringParameter(request, Constants.PARAM_FILTER);
     Boolean includeAllowableActions = getBooleanParameter(request,
         Constants.PARAM_ALLOWABLE_ACTIONS);
 
     // execute
     ObjectInfoHolder objectInfoHolder = new ObjectInfoHolderImpl();
-    List<ObjectData> versions = service.getAllVersions(context, repositoryId, objectId, filter,
-        includeAllowableActions, null, objectInfoHolder);
+    List<ObjectData> versions = service.getAllVersions(context, repositoryId, versionSeriesId,
+        filter, includeAllowableActions, null, objectInfoHolder);
 
     if (versions == null) {
       throw new CmisRuntimeException("Versions are null!");
     }
 
-    ObjectInfo objectInfo = objectInfoHolder.getObjectInfo(objectId);
+    ObjectInfo objectInfo = objectInfoHolder.getObjectInfo(versionSeriesId);
     if (objectInfo == null) {
-      throw new CmisRuntimeException("Object Info is missing!");
+      throw new CmisRuntimeException("Version Series Info is missing!");
     }
 
     // set headers
@@ -140,7 +140,7 @@ public class VersioningService {
 
     feed.writeSelfLink(compileUrl(baseUrl, RESOURCE_VERSIONS, objectInfo.getId()), null);
 
-    feed.writeViaLink(compileUrl(baseUrl, RESOURCE_ENTRY, objectId));
+    feed.writeViaLink(compileUrl(baseUrl, RESOURCE_ENTRY, versionSeriesId));
 
     // write entries
     AtomEntry entry = new AtomEntry(feed.getWriter());

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/test/java/org/apache/opencmis/server/impl/AtomEntryParserTest.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/test/java/org/apache/opencmis/server/impl/AtomEntryParserTest.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/test/java/org/apache/opencmis/server/impl/AtomEntryParserTest.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-impl/src/test/java/org/apache/opencmis/server/impl/AtomEntryParserTest.java Thu Mar 25 10:42:34 2010
@@ -19,7 +19,8 @@
 package org.apache.opencmis.server.impl;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -27,7 +28,6 @@ import java.io.ByteArrayOutputStream;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.opencmis.commons.PropertyIds;
 import org.apache.opencmis.commons.provider.ContentStreamData;
-import org.apache.opencmis.commons.provider.PropertyData;
 import org.apache.opencmis.commons.provider.PropertyStringData;
 import org.apache.opencmis.server.impl.atompub.AtomEntryParser;
 import org.junit.Test;

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java Thu Mar 25 10:42:34 2010
@@ -59,6 +59,12 @@ public class VersioningServiceImpl exten
         null);
   }
 
+  public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId,
+      String filter, Boolean includeAllowableActions, ExtensionsData extension) {
+
+    return getAllVersions(repositoryId, versionSeriesId, filter, includeAllowableActions, extension);
+  }
+  
   public List<ObjectData> getAllVersions(String repositoryId, String versionSeriesId,
       String filter, Boolean includeAllowableActions, ExtensionsData extension) {
 

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java Thu Mar 25 10:42:34 2010
@@ -84,19 +84,19 @@ public class AtomLinkInfoProvider {
       DocumentVersion ver = (DocumentVersion) so;
       DocumentVersion pwc = ver.getParentDocument().getPwc();
       objInfo.setIsCurrentVersion (ver == ver.getParentDocument().getLatestVersion(false)); 
-      objInfo.setHasVersionHistory(true);
+      objInfo.setVersionSeriesId(ver.getParentDocument().getId()); 
       objInfo.setWorkingCopyId(pwc==null ? null : pwc.getId());
       objInfo.setWorkingCopyOriginalId(pwc==ver ? ver.getParentDocument().getLatestVersion(false).getId() : null);
     } else if (so instanceof VersionedDocument) {
       VersionedDocument doc = (VersionedDocument) so;
       DocumentVersion pwc = doc.getPwc();
       objInfo.setIsCurrentVersion (false); 
-      objInfo.setHasVersionHistory(true);
+      objInfo.setVersionSeriesId(doc.getId());
       objInfo.setWorkingCopyId(pwc==null ? null : pwc.getId());
       objInfo.setWorkingCopyOriginalId(null);      
     } else { // unversioned document
       objInfo.setIsCurrentVersion (true); 
-      objInfo.setHasVersionHistory(false);
+      objInfo.setVersionSeriesId(null);
       objInfo.setWorkingCopyId(null);
       objInfo.setWorkingCopyOriginalId(null);
     }

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfo.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfo.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfo.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfo.java Thu Mar 25 10:42:34 2010
@@ -74,10 +74,10 @@ public interface ObjectInfo {
   boolean isCurrentVersion();
 
   /**
-   * Returns <code>true</code> if the object is a document and it is versionable, <code>false</code>
-   * otherwise.
+   * Returns the version series id if the object is a document and it is versionable,
+   * <code>null</code> otherwise.
    */
-  boolean hasVersionHistory();
+  String getVersionSeriesId();
 
   /**
    * Returns the working copy id if the object is a document and a working copy exists,

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfoImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfoImpl.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfoImpl.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-spi/src/main/java/org/apache/opencmis/server/spi/ObjectInfoImpl.java Thu Mar 25 10:42:34 2010
@@ -39,7 +39,7 @@ public class ObjectInfoImpl implements O
   private String fTypeId;
   private BaseObjectTypeIds fBaseObjectTypeId;
   private boolean fIsCurrentVersion = true;
-  private boolean fHasVersionHistory = false;
+  private String fVersionSeriesId = null;
   private String fWorkingCopyId = null;
   private String fWorkingCopyOriginalId = null;
   private boolean fHasContent = true;
@@ -127,12 +127,12 @@ public class ObjectInfoImpl implements O
     fIsCurrentVersion = currentVersion;
   }
 
-  public boolean hasVersionHistory() {
-    return fHasVersionHistory;
+  public String getVersionSeriesId() {
+    return fVersionSeriesId;
   }
 
-  public void setHasVersionHistory(boolean hasVersionHistory) {
-    fHasVersionHistory = hasVersionHistory;
+  public void setVersionSeriesId(String versionSeriesId) {
+    fVersionSeriesId = versionSeriesId;
   }
 
   public String getWorkingCopyId() {

Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-support/src/main/java/org/apache/opencmis/server/support/ObjectInfoHelper.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-support/src/main/java/org/apache/opencmis/server/support/ObjectInfoHelper.java?rev=927337&r1=927336&r2=927337&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-support/src/main/java/org/apache/opencmis/server/support/ObjectInfoHelper.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-support/src/main/java/org/apache/opencmis/server/support/ObjectInfoHelper.java Thu Mar 25 10:42:34 2010
@@ -208,12 +208,12 @@ public class ObjectInfoHelper
         // versioning information: 
         if (isVersioned) {          
           objInfo.setIsCurrentVersion(getBooleanProperty(properties, PropertyIds.CMIS_IS_LATEST_VERSION)); 
-          objInfo.setHasVersionHistory(true);
+          objInfo.setVersionSeriesId(getStringProperty(properties, PropertyIds.CMIS_VERSION_SERIES_ID));
           objInfo.setWorkingCopyId(getStringProperty(properties, PropertyIds.CMIS_VERSION_SERIES_CHECKED_OUT_ID));
           objInfo.setWorkingCopyOriginalId(getStringProperty(properties, PropertyIds.CMIS_VERSION_SERIES_CHECKED_OUT_ID));
         } else { // unversioned document
           objInfo.setIsCurrentVersion (true); 
-          objInfo.setHasVersionHistory(false);
+          objInfo.setVersionSeriesId(null);
           objInfo.setWorkingCopyId(null);
           objInfo.setWorkingCopyOriginalId(null);
         }