You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by je...@apache.org on 2013/03/31 18:39:14 UTC

svn commit: r1463002 [3/5] - in /chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src: main/java/org/apache/chemistry/opencmis/inmemory/ main/java/org/apache/chemistry/opencmis/inmemory/query/ main/java/org/apache/c...

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/InMemoryServiceValidatorImpl.java Sun Mar 31 16:39:14 2013
@@ -26,6 +26,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
 import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
 import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
 import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.Holder;
@@ -40,18 +41,26 @@ public class InMemoryServiceValidatorImp
         super(sm);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkStandardParameters(java.lang.String, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkStandardParameters(java.lang.String, java.lang.String)
      */
     @Override
     protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
 
-        StoredObject so =  super.checkStandardParameters(repositoryId, objectId);
+        StoredObject so = super.checkStandardParameters(repositoryId, objectId);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkStandardParametersAllowNull(java.lang.String, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkStandardParametersAllowNull(java.lang.String, java.lang.String)
      */
     @Override
     protected StoredObject checkStandardParametersAllowNull(String repositoryId, String objectId) {
@@ -60,18 +69,28 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkExistingObjectId(org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkExistingObjectId
+     * (org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore,
+     * java.lang.String)
      */
     @Override
     protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
 
-        StoredObject so =  super.checkExistingObjectId(objStore, objectId);
+        StoredObject so = super.checkExistingObjectId(objStore, objectId);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkRepositoryId(java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkRepositoryId(java.lang.String)
      */
     @Override
     protected void checkRepositoryId(String repositoryId) {
@@ -79,8 +98,12 @@ public class InMemoryServiceValidatorImp
         super.checkRepositoryId(repositoryId);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkParams(java.lang.String, java.lang.String, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkParams(java.lang.String, java.lang.String, java.lang.String)
      */
     @Override
     protected StoredObject[] checkParams(String repositoryId, String objectId1, String objectId2) {
@@ -89,8 +112,14 @@ public class InMemoryServiceValidatorImp
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRepositoryInfos(org.apache.chemistry.opencmis.commons.server.CallContext, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getRepositoryInfos
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getRepositoryInfos(CallContext context, ExtensionsData extension) {
@@ -98,8 +127,15 @@ public class InMemoryServiceValidatorImp
         super.getRepositoryInfos(context, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRepositoryInfo(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getRepositoryInfo
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getRepositoryInfo(CallContext context, String repositoryId, ExtensionsData extension) {
@@ -107,8 +143,15 @@ public class InMemoryServiceValidatorImp
         super.getRepositoryInfo(context, repositoryId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeChildren(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getTypeChildren
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getTypeChildren(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
@@ -116,8 +159,15 @@ public class InMemoryServiceValidatorImp
         super.getTypeChildren(context, repositoryId, typeId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeDescendants(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getTypeDescendants
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getTypeDescendants(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
@@ -125,8 +175,15 @@ public class InMemoryServiceValidatorImp
         super.getTypeDescendants(context, repositoryId, typeId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getTypeDefinition(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getTypeDefinition
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getTypeDefinition(CallContext context, String repositoryId, String typeId, ExtensionsData extension) {
@@ -134,8 +191,14 @@ public class InMemoryServiceValidatorImp
         super.getTypeDefinition(context, repositoryId, typeId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getChildren(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getChildren(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getChildren(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
@@ -145,8 +208,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getDescendants(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getDescendants(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getDescendants(CallContext context, String repositoryId, String folderId,
@@ -157,8 +226,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getFolderTree(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getFolderTree(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getFolderTree(CallContext context, String repositoryId, String folderId,
@@ -169,8 +244,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectParents(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getObjectParents
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getObjectParents(CallContext context, String repositoryId, String objectId,
@@ -181,8 +263,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getFolderParent(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getFolderParent
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getFolderParent(CallContext context, String repositoryId, String folderId,
@@ -193,90 +282,147 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getCheckedOutDocs(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getCheckedOutDocs
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getCheckedOutDocs(CallContext context, String repositoryId, String folderId,
             ExtensionsData extension) {
 
         StoredObject so = super.getCheckedOutDocs(context, repositoryId, folderId, extension);
-        if (null != so )
+        if (null != so)
             checkReadAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createDocument(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #createDocument(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject createDocument(CallContext context, String repositoryId, String folderId,
-            ExtensionsData extension) {
+            List<String> policyIds, ExtensionsData extension) {
 
-        StoredObject folder = super.createDocument(context, repositoryId, folderId, extension);
+        StoredObject folder = super.createDocument(context, repositoryId, folderId, policyIds, extension);
         if (null != folder) // not if unfiled
             checkWriteAccess(repositoryId, context.getUsername(), folder);
         return folder;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createDocumentFromSource(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #createDocumentFromSource
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject createDocumentFromSource(CallContext context, String repositoryId, String sourceId,
-            String folderId, ExtensionsData extension) {
+            String folderId, List<String> policyIds, ExtensionsData extension) {
 
-        StoredObject source = super.createDocumentFromSource(context, repositoryId, sourceId, folderId, extension);
+        StoredObject source = super.createDocumentFromSource(context, repositoryId, sourceId, folderId, policyIds,
+                extension);
         checkWriteAccess(repositoryId, context.getUsername(), source);
         return source;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #createFolder(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
-    public StoredObject createFolder(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
+    public StoredObject createFolder(CallContext context, String repositoryId, String folderId, List<String> policyIds,
+            ExtensionsData extension) {
 
-        StoredObject parentFolder = super.createFolder(context, repositoryId, folderId, extension);
+        StoredObject parentFolder = super.createFolder(context, repositoryId, folderId, policyIds, extension);
         checkWriteAccess(repositoryId, context.getUsername(), parentFolder);
         return parentFolder;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createRelationship(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #createRelationship
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] createRelationship(CallContext context, String repositoryId, String sourceId,
-            String targetId, ExtensionsData extension) {
+            String targetId, List<String> policyIds, ExtensionsData extension) {
 
-        StoredObject[] sos = super.createRelationship(context, repositoryId, sourceId, targetId, extension);
+        StoredObject[] sos = super.createRelationship(context, repositoryId, sourceId, targetId, policyIds, extension);
         checkReadAccess(repositoryId, context.getUsername(), sos[0]);
-        checkWriteAccess(repositoryId, context.getUsername(), sos[1]);
+        checkReadAccess(repositoryId, context.getUsername(), sos[1]);
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#createPolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
-     */
-    @Override
-    public StoredObject createPolicy(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #createPolicy(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+     */
+    @Override
+    public StoredObject createPolicy(CallContext context, String repositoryId, String folderId, Acl addAces,
+            Acl removeAces, List<String> policyIds, ExtensionsData extension) {
+
+        if (policyIds != null && policyIds.size() > 0)
+            throw new CmisConstraintException("Applying policies to poilicies is not supported.");
+        if (folderId != null && folderId.length() > 0)
+            throw new CmisConstraintException("Policies cannot be created in folders.");
+        if (addAces != null || removeAces != null)
+            throw new CmisConstraintException("ACLs on policies are not suported.");
 
-        StoredObject so = super.createPolicy(context, repositoryId, folderId, extension);
+        StoredObject so = super.createPolicy(context, repositoryId, folderId, addAces, removeAces, policyIds, extension);
         checkAllAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
     @Override
     public StoredObject createItem(CallContext context, String repositoryId, Properties properties, String folderId,
-            List<String> policies, Acl addAces, Acl removeAces, ExtensionsData extension) {
-        StoredObject folder = super.createFolder(context, repositoryId, folderId, extension);
+            List<String> policyIds, Acl addAces, Acl removeAces, ExtensionsData extension) {
+        StoredObject folder = super.createItem(context, repositoryId, properties, folderId, policyIds, addAces,
+                removeAces, extension);
         if (null != folder) // not if unfiled
             checkWriteAccess(repositoryId, context.getUsername(), folder);
-        return folder;        
+        return folder;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAllowableActions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getAllowableActions
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getAllowableActions(CallContext context, String repositoryId, String objectId,
@@ -287,8 +433,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getObject(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getObject(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
@@ -298,8 +450,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getProperties(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getProperties(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getProperties(CallContext context, String repositoryId, String objectId,
@@ -310,8 +468,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getRenditions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getRenditions(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getRenditions(CallContext context, String repositoryId, String objectId,
@@ -322,19 +486,33 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectByPath(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getObjectByPath
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getObjectByPath(CallContext context, String repositoryId, String path, ExtensionsData extension) {
 
-        StoredObject so =  super.getObjectByPath(context, repositoryId, path, extension);
+        StoredObject so = super.getObjectByPath(context, repositoryId, path, extension);
         checkReadAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getContentStream
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getContentStream(CallContext context, String repositoryId, String objectId, String streamId,
@@ -345,8 +523,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#updateProperties(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #updateProperties
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject updateProperties(CallContext context, String repositoryId, Holder<String> objectId,
@@ -357,22 +542,36 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#moveObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #moveObject(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] moveObject(CallContext context, String repositoryId, Holder<String> objectId,
             String targetFolderId, String sourceFolderId, ExtensionsData extension) {
 
-        StoredObject[] sos = super.moveObject(context, repositoryId, objectId, targetFolderId, sourceFolderId, extension);
+        StoredObject[] sos = super.moveObject(context, repositoryId, objectId, targetFolderId, sourceFolderId,
+                extension);
         checkReadAccess(repositoryId, context.getUsername(), sos[0]);
         checkReadAccess(repositoryId, context.getUsername(), sos[1]);
         checkWriteAccess(repositoryId, context.getUsername(), sos[2]);
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteObject(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #deleteObject(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.Boolean,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject deleteObject(CallContext context, String repositoryId, String objectId, Boolean allVersions,
@@ -383,8 +582,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteTree(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.enums.UnfileObject, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #deleteTree(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.Boolean,
+     * org.apache.chemistry.opencmis.commons.enums.UnfileObject,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject deleteTree(CallContext context, String repositoryId, String folderId, Boolean allVersions,
@@ -395,8 +601,16 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#setContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #setContentStream
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * java.lang.Boolean,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject setContentStream(CallContext context, String repositoryId, Holder<String> objectId,
@@ -407,8 +621,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteContentStream(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #deleteContentStream
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject deleteContentStream(CallContext context, String repositoryId, Holder<String> objectId,
@@ -417,54 +638,83 @@ public class InMemoryServiceValidatorImp
         StoredObject so = super.deleteContentStream(context, repositoryId, objectId, extension);
         checkWriteAccess(repositoryId, context.getUsername(), so);
         return so;
-   }
+    }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData, org.apache.chemistry.opencmis.commons.spi.Holder)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkOut(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData,
+     * org.apache.chemistry.opencmis.commons.spi.Holder)
      */
     @Override
     public StoredObject checkOut(CallContext context, String repositoryId, Holder<String> objectId,
             ExtensionsData extension, Holder<Boolean> contentCopied) {
 
         StoredObject so = super.checkOut(context, repositoryId, objectId, extension, contentCopied);
-//        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
+        // StoredObject container = so instanceof DocumentVersion ?
+        // ((DocumentVersion)so).getParentDocument() : so;
         checkWriteAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#cancelCheckOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #cancelCheckOut(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject cancelCheckOut(CallContext context, String repositoryId, String objectId,
             ExtensionsData extension) {
 
         StoredObject so = super.cancelCheckOut(context, repositoryId, objectId, extension);
-//        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
+        // StoredObject container = so instanceof DocumentVersion ?
+        // ((DocumentVersion)so).getParentDocument() : so;
         checkWriteAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#checkIn(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
-     */
-    @Override
-    public StoredObject checkIn(CallContext context, String repositoryId, Holder<String> objectId,
-            Acl addAces, Acl removeAces, ExtensionsData extension) {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #checkIn(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, org.apache.chemistry.opencmis.commons.spi.Holder,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+     */
+    @Override
+    public StoredObject checkIn(CallContext context, String repositoryId, Holder<String> objectId, Acl addAces,
+            Acl removeAces, List<String> policyIds, ExtensionsData extension) {
+
+        StoredObject so = super.checkIn(context, repositoryId, objectId, addAces, removeAces, policyIds, extension);
+        // StoredObject container = so instanceof DocumentVersion ?
+        // ((DocumentVersion)so).getParentDocument() : so;
 
-        StoredObject so = super.checkIn(context, repositoryId, objectId, addAces, removeAces, extension);
-//        StoredObject container = so instanceof DocumentVersion ? ((DocumentVersion)so).getParentDocument() : so;
-        
         if (null != addAces || null != removeAces)
             throw new CmisInvalidArgumentException(
                     "version specific ACLs are not supported, addAces and removeAces must be null.");
-        
+
         checkWriteAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectOfLatestVersion(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getObjectOfLatestVersion
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getObjectOfLatestVersion(CallContext context, String repositoryId, String objectId,
@@ -475,20 +725,34 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getPropertiesOfLatestVersion(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getPropertiesOfLatestVersion
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getPropertiesOfLatestVersion(CallContext context, String repositoryId, String objectId,
             String versionSeriesId, ExtensionsData extension) {
 
-        StoredObject so = super.getPropertiesOfLatestVersion(context, repositoryId, objectId, versionSeriesId, extension);
+        StoredObject so = super.getPropertiesOfLatestVersion(context, repositoryId, objectId, versionSeriesId,
+                extension);
         checkReadAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAllVersions(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getAllVersions(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getAllVersions(CallContext context, String repositoryId, String objectId,
@@ -499,8 +763,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#query(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #query(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void query(CallContext context, String repositoryId, ExtensionsData extension) {
@@ -508,8 +778,15 @@ public class InMemoryServiceValidatorImp
         super.query(context, repositoryId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getContentChanges(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getContentChanges
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public void getContentChanges(CallContext context, String repositoryId, ExtensionsData extension) {
@@ -517,8 +794,15 @@ public class InMemoryServiceValidatorImp
         super.getContentChanges(context, repositoryId, extension);
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#addObjectToFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #addObjectToFolder
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] addObjectToFolder(CallContext context, String repositoryId, String objectId, String folderId,
@@ -530,8 +814,15 @@ public class InMemoryServiceValidatorImp
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#removeObjectFromFolder(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #removeObjectFromFolder
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] removeObjectFromFolder(CallContext context, String repositoryId, String objectId,
@@ -543,20 +834,36 @@ public class InMemoryServiceValidatorImp
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getObjectRelationships(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.enums.RelationshipDirection, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getObjectRelationships
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.enums.RelationshipDirection,
+     * java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getObjectRelationships(CallContext context, String repositoryId, String objectId,
             RelationshipDirection relationshipDirection, String typeId, ExtensionsData extension) {
 
-        StoredObject so = super.getObjectRelationships(context, repositoryId, objectId, relationshipDirection, typeId, extension);
+        StoredObject so = super.getObjectRelationships(context, repositoryId, objectId, relationshipDirection, typeId,
+                extension);
         checkReadAccess(repositoryId, context.getUsername(), so);
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getAcl(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getAcl(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
@@ -566,8 +873,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.enums.AclPropagation, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.enums.AclPropagation,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject applyAcl(CallContext context, String repositoryId, String objectId,
@@ -578,8 +892,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyPolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #applyPolicy(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] applyPolicy(CallContext context, String repositoryId, String policyId, String objectId,
@@ -590,8 +910,14 @@ public class InMemoryServiceValidatorImp
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#removePolicy(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #removePolicy(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject[] removePolicy(CallContext context, String repositoryId, String policyId, String objectId,
@@ -602,8 +928,15 @@ public class InMemoryServiceValidatorImp
         return sos;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#getAppliedPolicies(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #getAppliedPolicies
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject getAppliedPolicies(CallContext context, String repositoryId, String objectId,
@@ -614,8 +947,14 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#create(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #create(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject create(CallContext context, String repositoryId, String folderId, ExtensionsData extension) {
@@ -625,8 +964,15 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#deleteObjectOrCancelCheckOut(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String, org.apache.chemistry.opencmis.commons.data.ExtensionsData)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #deleteObjectOrCancelCheckOut
+     * (org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String,
+     * org.apache.chemistry.opencmis.commons.data.ExtensionsData)
      */
     @Override
     public StoredObject deleteObjectOrCancelCheckOut(CallContext context, String repositoryId, String objectId,
@@ -637,8 +983,13 @@ public class InMemoryServiceValidatorImp
         return so;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl#applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext, java.lang.String, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.chemistry.opencmis.inmemory.server.BaseServiceValidatorImpl
+     * #applyAcl(org.apache.chemistry.opencmis.commons.server.CallContext,
+     * java.lang.String, java.lang.String)
      */
     @Override
     public StoredObject applyAcl(CallContext context, String repositoryId, String objectId) {
@@ -647,21 +998,21 @@ public class InMemoryServiceValidatorImp
         checkAllAccess(repositoryId, context.getUsername(), so);
         return so;
     }
-    
+
     private ObjectStoreImpl getObjectStore(String repositoryId) {
         return (ObjectStoreImpl) fStoreManager.getObjectStore(repositoryId);
     }
-    
+
     private void checkReadAccess(String repositoryId, String principalId, StoredObject so) {
         getObjectStore(repositoryId).checkReadAccess(principalId, so);
     }
-    
+
     private void checkWriteAccess(String repositoryId, String principalId, StoredObject so) {
         getObjectStore(repositoryId).checkWriteAccess(principalId, so);
     }
-    
+
     private void checkAllAccess(String repositoryId, String principalId, StoredObject so) {
         getObjectStore(repositoryId).checkAllAccess(principalId, so);
     }
- 
+
 }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java Sun Mar 31 16:39:14 2013
@@ -33,6 +33,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
@@ -42,6 +43,7 @@ import org.apache.chemistry.opencmis.inm
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.MultiFiling;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Relationship;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.SingleFiling;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.VersionedDocument;
@@ -144,8 +146,6 @@ public class ObjectStoreImpl implements 
                         return so;
                     }
                 }
-            } else {
-                return null;
             }
         }
         return null;
@@ -251,24 +251,25 @@ public class ObjectStoreImpl implements 
         fRootFolder = rootFolder;
     }
 
-    public Document createDocument(String name,
-			Map<String, PropertyData<?>> propMap, String user, Folder folder,
-			Acl addACEs, Acl removeACEs)  {
-    	DocumentImpl doc = new DocumentImpl(this);
+    public Document createDocument(String name, Map<String, PropertyData<?>> propMap, String user, Folder folder,
+            List<String> policies, Acl addACEs, Acl removeACEs) {
+        DocumentImpl doc = new DocumentImpl(this);
         doc.createSystemBasePropertiesWhenCreated(propMap, user);
         doc.setCustomProperties(propMap);
         doc.setRepositoryId(fRepositoryId);
         doc.setName(name);
         if (null != folder) {
-            ((FolderImpl)folder).addChildDocument(doc); // add document to folder and
+            ((FolderImpl) folder).addChildDocument(doc); // add document to
+                                                         // folder and
         }
-        int aclId = getAclId(((FolderImpl)folder), addACEs, removeACEs);
+        int aclId = getAclId(((FolderImpl) folder), addACEs, removeACEs);
         doc.setAclId(aclId);
+        doc.setAppliedPolicies(policies);
         return doc;
     }
 
     public StoredObject createItem(String name, Map<String, PropertyData<?>> propMap, String user, Folder folder,
-            Acl addACEs, Acl removeACEs) {
+            List<String> policies, Acl addACEs, Acl removeACEs) {
         StoredObjectImpl item = new ItemImpl(this);
         item.createSystemBasePropertiesWhenCreated(propMap, user);
         item.setCustomProperties(propMap);
@@ -277,6 +278,7 @@ public class ObjectStoreImpl implements 
         if (null != folder) {
             ((FolderImpl)folder).addChildItem(item); // add document to folder and
         }
+        item.setAppliedPolicies(policies);
         int aclId = getAclId(((FolderImpl)folder), addACEs, removeACEs);
         item.setAclId(aclId);
         return item;
@@ -284,7 +286,7 @@ public class ObjectStoreImpl implements 
     
     public DocumentVersion createVersionedDocument(String name,
     		Map<String, PropertyData<?>> propMap, String user, Folder folder,
-			Acl addACEs, Acl removeACEs, ContentStream contentStream, VersioningState versioningState) {
+    		List<String> policies, Acl addACEs, Acl removeACEs, ContentStream contentStream, VersioningState versioningState) {
     	VersionedDocumentImpl doc = new VersionedDocumentImpl(this);
         doc.createSystemBasePropertiesWhenCreated(propMap, user);
         doc.setCustomProperties(propMap);
@@ -298,13 +300,14 @@ public class ObjectStoreImpl implements 
         version.setCustomProperties(propMap);
         int aclId = getAclId(((FolderImpl)folder), addACEs, removeACEs);
         doc.setAclId(aclId);
+        doc.setAppliedPolicies(policies);
         doc.persist();
         return version;
     }
 
     public Folder createFolder(String name,
 			Map<String, PropertyData<?>> propMap, String user, Folder parent,
-			Acl addACEs, Acl removeACEs) {
+			List<String> policies, Acl addACEs, Acl removeACEs) {
     	
     	FolderImpl folder = new FolderImpl(this, name, null);
         if (null != propMap) {
@@ -318,16 +321,28 @@ public class ObjectStoreImpl implements 
 
         int aclId = getAclId(((FolderImpl)parent), addACEs, removeACEs);
         folder.setAclId(aclId);
-        
+        folder.setAppliedPolicies(policies);
+
         return folder;
     }
 
     public Folder createFolder(String name) {
-  	  Folder folder = new FolderImpl(this, name, null);
+        Folder folder = new FolderImpl(this, name, null);
         folder.setRepositoryId(fRepositoryId);
         return folder;
 	}
     
+    public StoredObject createPolicy(String name, String policyText, Map<String, PropertyData<?>> propMap, String user) {
+        PolicyImpl policy = new PolicyImpl(this);
+        policy.createSystemBasePropertiesWhenCreated(propMap, user);
+        policy.setCustomProperties(propMap);
+        policy.setRepositoryId(fRepositoryId);
+        policy.setName(name);
+        policy.setPolicyText(policyText);
+        policy.persist();
+        return policy;
+    }
+    
 	public List<StoredObject> getCheckedOutDocuments(String orderBy,
 			String user, IncludeRelationships includeRelationships) {
 	    List<StoredObject> res = new ArrayList<StoredObject>();
@@ -344,13 +359,48 @@ public class ObjectStoreImpl implements 
         return res;
     }
 
-	public StoredObject createRelationship(StoredObject sourceObject,
+	public StoredObject createRelationship(String name, StoredObject sourceObject,
 			StoredObject targetObject, Map<String, PropertyData<?>> propMap,
 			String user, Acl addACEs, Acl removeACEs) {
-		// TODO Auto-generated method stub
-		return null;
+
+        RelationshipImpl rel = new RelationshipImpl(this);
+        rel.createSystemBasePropertiesWhenCreated(propMap, user);
+        rel.setCustomProperties(propMap);
+        rel.setRepositoryId(fRepositoryId);
+        rel.setName(name);
+        if (null != sourceObject)
+            rel.setSource(sourceObject.getId());
+        if (null != targetObject)
+            rel.setTarget(targetObject.getId());
+        int aclId = getAclId(null, addACEs, removeACEs);
+        rel.setAclId(aclId);
+        rel.persist();
+        return rel;
 	}
 
+    public List<StoredObject> getRelationships(String objectId, List<String> typeIds, RelationshipDirection direction) {
+    
+        List<StoredObject> res = new ArrayList<StoredObject>();
+        
+        if (typeIds != null && typeIds.size() > 0) {
+            for (String typeId : typeIds) {
+                for (StoredObject so : fStoredObjectMap.values()) {
+                    if (so instanceof Relationship && so.getTypeId().equals(typeId)) {
+                        Relationship ro = (Relationship) so;
+                        if (ro.getSourceObjectId().equals(objectId) && (RelationshipDirection.EITHER == direction || RelationshipDirection.SOURCE == direction)) {
+                                res.add(so);
+                        } else if (ro.getTargetObjectId().equals(objectId) && (RelationshipDirection.EITHER == direction
+                                || RelationshipDirection.TARGET == direction)) {
+                            res.add(so);
+                        }
+                    }
+                }
+           }
+        } else
+            res = getAllRelationships(objectId, direction);
+        return res;
+    }
+
     public Acl applyAcl(StoredObject so, Acl addAces, Acl removeAces, AclPropagation aclPropagation, String principalId) {
         if (aclPropagation==AclPropagation.OBJECTONLY || !(so instanceof Folder)) {
             return applyAcl(so, addAces, removeAces);
@@ -603,6 +653,24 @@ public class ObjectStoreImpl implements 
         return result;
     }
 
+    private List<StoredObject> getAllRelationships(String objectId, RelationshipDirection direction) {
+        
+        List<StoredObject> res = new ArrayList<StoredObject>();
+        
+        for (StoredObject so : fStoredObjectMap.values()) {
+            if (so instanceof Relationship) {
+                Relationship ro = (Relationship) so;
+                if (ro.getSourceObjectId().equals(objectId) && (RelationshipDirection.EITHER == direction || RelationshipDirection.SOURCE == direction)) {
+                    res.add(so);
+                } else if (ro.getTargetObjectId().equals(objectId) && (RelationshipDirection.EITHER == direction
+                        || RelationshipDirection.TARGET == direction)) {
+                    res.add(so);
+                }
+            }
+        }
+        return res;
+    }
+
     public boolean isTypeInUse(String typeId) {
         // iterate over all the objects and check for each if the type matches
         for (String objectId : getIds()) {
@@ -613,4 +681,5 @@ public class ObjectStoreImpl implements 
         return false;
     }
 
+
 }

Added: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java?rev=1463002&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/PolicyImpl.java Sun Mar 31 16:39:14 2013
@@ -0,0 +1,60 @@
+/*
+ * 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.chemistry.opencmis.inmemory.storedobj.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
+import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
+import org.apache.chemistry.opencmis.inmemory.FilterParser;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Policy;
+
+public class PolicyImpl extends StoredObjectImpl implements Policy {
+
+    PolicyImpl(ObjectStoreImpl objStore) {
+        super(objStore);
+    }
+
+    private String policyText;
+    
+
+    public void setPolicyText(String text) {
+        policyText = text;
+    }
+    
+    public String getPolicyText() {
+        return policyText;
+    }
+    
+    @Override
+    public void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
+            List<String> requestedIds) {
+
+       super.fillProperties(properties, objFactory, requestedIds);
+        
+        if (FilterParser.isContainedInFilter(PropertyIds.POLICY_TEXT, requestedIds)) {
+            properties.put(PropertyIds.POLICY_TEXT, objFactory.createPropertyStringData(
+                    PropertyIds.POLICY_TEXT, policyText) );
+        }
+        
+    }
+
+}

Added: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java?rev=1463002&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/RelationshipImpl.java Sun Mar 31 16:39:14 2013
@@ -0,0 +1,76 @@
+/*
+ * 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.chemistry.opencmis.inmemory.storedobj.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
+import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
+import org.apache.chemistry.opencmis.inmemory.FilterParser;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.Relationship;
+
+public class RelationshipImpl extends StoredObjectImpl implements Relationship {
+    
+    private String sourceObjId;
+    private String targetObjId;
+
+    RelationshipImpl(ObjectStoreImpl objStore) {
+        super(objStore);
+    }
+
+    public String getSourceObjectId() {
+        return sourceObjId;
+    }
+
+    public void setSource(String id) {
+        this.sourceObjId = id;
+    }
+
+    public String getTargetObjectId() {
+        return targetObjId;
+    }
+
+    public void setTarget(String id) {
+        targetObjId = id;
+    }
+
+    @Override
+    public void fillProperties(Map<String, PropertyData<?>> properties, BindingsObjectFactory objFactory,
+            List<String> requestedIds) {
+
+       super.fillProperties(properties, objFactory, requestedIds);
+        
+        if (FilterParser.isContainedInFilter(PropertyIds.SOURCE_ID, requestedIds)) {
+            properties.put(PropertyIds.SOURCE_ID, objFactory.createPropertyStringData(
+                    PropertyIds.SOURCE_ID, sourceObjId) );
+        }
+        
+        if (FilterParser.isContainedInFilter(PropertyIds.TARGET_ID, requestedIds)) {
+            properties.put(PropertyIds.TARGET_ID, objFactory.createPropertyStringData(
+                    PropertyIds.TARGET_ID, targetObjId));
+        }
+        
+    }
+
+    
+    
+
+}

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java Sun Mar 31 16:39:14 2013
@@ -48,6 +48,7 @@ import org.apache.chemistry.opencmis.inm
 import org.apache.chemistry.opencmis.inmemory.FilterParser;
 import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceContext;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
+import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
 
 /**
  * StoredObject is the common superclass of all objects hold in the repository
@@ -75,6 +76,7 @@ public class StoredObjectImpl implements
     protected int fAclId;
     protected String description; // CMIS 1.1
     protected List<String> secondaryTypeIds; // CMIS 1.1
+    protected List<String> policyIds;
 
     StoredObjectImpl(ObjectStoreImpl objStore) { // visibility should be package
         GregorianCalendar now = getNow();
@@ -83,6 +85,7 @@ public class StoredObjectImpl implements
         fModifiedAt = now;
         fObjStore = objStore;
         secondaryTypeIds = new ArrayList<String>();
+        policyIds = null;
     }
 
     public String getId() {
@@ -145,6 +148,14 @@ public class StoredObjectImpl implements
         return fRepositoryId;
     }
     
+    public List<String> getAppliedPolicies() {
+        return policyIds;
+    }
+    
+    public void setAppliedPolicies(List<String> newPolicies) {
+        policyIds = newPolicies;
+    }
+    
     // CMIS 1.1:
     public void setDescription(String descr) {
         description = descr;
@@ -442,13 +453,10 @@ public class StoredObjectImpl implements
 	    fAclId = aclId;
 	}
 	
-	public ObjectList getObjectRelationships(
-			Boolean includeSubRelationshipTypes,
-			RelationshipDirection relationshipDirection, String typeId,
-			String filter, Boolean includeAllowableActions,
-			BigInteger maxItems, BigInteger skipCount,
-			ExtensionsData extension, String user) {
-		return null;
+    public List<StoredObject> getObjectRelationships(RelationshipDirection relationshipDirection, String user) {
+	    
+        List<StoredObject> rels = fObjStore.getRelationships(getId(), null, relationshipDirection);
+		return rels;
 	}
 
 	public AllowableActions getAllowableActions(String user) {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/VersionedDocumentImpl.java Sun Mar 31 16:39:14 2013
@@ -67,11 +67,13 @@ public class VersionedDocumentImpl exten
 
     public boolean deleteVersion(DocumentVersion version) {
         if (fIsCheckedOut) {
-            // Note: Do not throw an exception here if the document is checked-out. In AtomPub binding cancelCheckout
+            // Note: Do not throw an exception here if the document is
+            // checked-out. In AtomPub binding cancelCheckout
             // mapped to a deleteVersion() call!
             DocumentVersion pwc = getPwc();
             if (pwc == version) {
-                cancelCheckOut(false); // note object is already deleted from map in ObjectStore 
+                cancelCheckOut(false); // note object is already deleted from
+                                       // map in ObjectStore
                 return !fVersions.isEmpty();
             }
         }
@@ -87,7 +89,8 @@ public class VersionedDocumentImpl exten
         cancelCheckOut(true);
     }
 
-    public void checkIn(boolean isMajor, Properties properties, ContentStream content, String checkinComment, String user) {
+    public void checkIn(boolean isMajor, Properties properties, ContentStream content, String checkinComment,
+            List<String> policyIds, String user) {
         if (fIsCheckedOut) {
             if (fCheckedOutUser.equals(user)) {
                 fIsCheckedOut = false;
@@ -102,15 +105,18 @@ public class VersionedDocumentImpl exten
         }
 
         DocumentVersion pwc = getPwc();
-        
+
         if (null != content)
             pwc.setContent(content, false);
 
         if (null != properties && null != properties.getProperties())
-            ((DocumentVersionImpl)pwc).setCustomProperties(properties.getProperties());
+            ((DocumentVersionImpl) pwc).setCustomProperties(properties.getProperties());
 
         pwc.setCheckinComment(checkinComment);
         pwc.commit(isMajor);
+        if (policyIds != null && policyIds.size() > 0 ) {
+            ((DocumentVersionImpl) pwc).setAppliedPolicies(policyIds);
+        }
     }
 
     public DocumentVersion checkOut(ContentStream content, String user) {
@@ -132,8 +138,8 @@ public class VersionedDocumentImpl exten
 
         DocumentVersion latest = null;
         if (fVersions.size() == 0)
-        	return null;
-        
+            return null;
+
         if (major) {
             for (DocumentVersion ver : fVersions) {
                 if (ver.isMajor()) {
@@ -171,43 +177,44 @@ public class VersionedDocumentImpl exten
 
         super.fillProperties(properties, objFactory, requestedIds);
 
-
         if (FilterParser.isContainedInFilter(PropertyIds.IS_IMMUTABLE, requestedIds)) {
-            properties.put(PropertyIds.IS_IMMUTABLE, objFactory.createPropertyBooleanData(PropertyIds.IS_IMMUTABLE,
-                    false));
+            properties.put(PropertyIds.IS_IMMUTABLE,
+                    objFactory.createPropertyBooleanData(PropertyIds.IS_IMMUTABLE, false));
         }
 
         // overwrite the version related properties
         if (FilterParser.isContainedInFilter(PropertyIds.VERSION_SERIES_ID, requestedIds)) {
-            properties.put(PropertyIds.VERSION_SERIES_ID, objFactory.createPropertyIdData(
-                    PropertyIds.VERSION_SERIES_ID, getId()));
+            properties.put(PropertyIds.VERSION_SERIES_ID,
+                    objFactory.createPropertyIdData(PropertyIds.VERSION_SERIES_ID, getId()));
         }
         if (FilterParser.isContainedInFilter(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT, requestedIds)) {
-            properties.put(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT, objFactory.createPropertyBooleanData(
-                    PropertyIds.IS_VERSION_SERIES_CHECKED_OUT, isCheckedOut()));
+            properties.put(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT,
+                    objFactory.createPropertyBooleanData(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT, isCheckedOut()));
         }
         if (FilterParser.isContainedInFilter(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY, requestedIds)) {
-            properties.put(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY, objFactory.createPropertyStringData(
-                    PropertyIds.VERSION_SERIES_CHECKED_OUT_BY, getCheckedOutBy()));
+            properties.put(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY,
+                    objFactory.createPropertyStringData(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY, getCheckedOutBy()));
         }
         if (FilterParser.isContainedInFilter(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID, requestedIds)) {
-            properties.put(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID, objFactory.createPropertyIdData(
-                    PropertyIds.VERSION_SERIES_CHECKED_OUT_ID, pwc == null ? null : pwc.getId()));
+            properties.put(
+                    PropertyIds.VERSION_SERIES_CHECKED_OUT_ID,
+                    objFactory.createPropertyIdData(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID,
+                            pwc == null ? null : pwc.getId()));
         }
 
     }
-    
+
     private void cancelCheckOut(boolean deleteInObjectStore) {
-        
+
         DocumentVersion pwc = getPwc();
         fIsCheckedOut = false;
         fCheckedOutUser = null;
         fVersions.remove(pwc);
         if (fVersions.size() > 0) {
-        	String nameLatestVer = getLatestVersion(false).getName();
-        	if (!getName().equals(nameLatestVer)) {
-        		setName(nameLatestVer);
-        	}        	
+            String nameLatestVer = getLatestVersion(false).getName();
+            if (!getName().equals(nameLatestVer)) {
+                setName(nameLatestVer);
+            }
         }
 
         if (deleteInObjectStore)

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/DocumentTypeCreationHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/DocumentTypeCreationHelper.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/DocumentTypeCreationHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/DocumentTypeCreationHelper.java Sun Mar 31 16:39:14 2013
@@ -24,9 +24,10 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.chemistry.opencmis.commons.definitions.PolicyTypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
+import org.apache.chemistry.opencmis.commons.definitions.RelationshipTypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
-import org.apache.chemistry.opencmis.commons.enums.Cardinality;
 import org.apache.chemistry.opencmis.commons.enums.Updatability;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyBooleanDefinitionImpl;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeDefinitionImpl;
@@ -61,11 +62,11 @@ public class DocumentTypeCreationHelper 
         cmisType = InMemoryFolderTypeDefinition.getRootFolderType();
         typesList.add(cmisType);
 
-        // cmisType = RelationshipTypeDefinition.getRootRelationshipType();
-        // typesList.add(cmisType);
-        //
-        // cmisType = PolicyTypeDefinition.getRootPolicyType();
-        // typesList.add(cmisType);
+        cmisType = InMemoryRelationshipTypeDefinition.getRootRelationshipType();
+        typesList.add(cmisType);
+        
+        cmisType = InMemoryPolicyTypeDefinition.getRootPolicyType();
+        typesList.add(cmisType);
 
         // CMIS 1.1
         cmisType = InMemoryItemTypeDefinition.getRootItemType();
@@ -222,7 +223,7 @@ public class DocumentTypeCreationHelper 
 
         setBasicPropertyDefinitions(propertyDefinitions);
         PropertyStringDefinitionImpl propS = PropertyCreationHelper.createStringDefinition(PropertyIds.POLICY_TEXT,
-                "Policy Text", Updatability.READONLY);
+                "Policy Text", Updatability.READWRITE);
         propS.setIsRequired(true);
         propertyDefinitions.put(propS.getId(), propS);
     }
@@ -231,13 +232,23 @@ public class DocumentTypeCreationHelper 
 
         setBasicPropertyDefinitions(propertyDefinitions);
         PropertyIdDefinitionImpl propId = PropertyCreationHelper.createIdDefinition(PropertyIds.SOURCE_ID,
-                "Source Id", Updatability.READONLY);
+                "Source Id", Updatability.READWRITE);
         propId.setIsRequired(true);
         propertyDefinitions.put(propId.getId(), propId);
 
-        propId = PropertyCreationHelper.createIdDefinition(PropertyIds.TARGET_ID, "Target Id", Updatability.READONLY);
+        propId = PropertyCreationHelper.createIdDefinition(PropertyIds.TARGET_ID, "Target Id", Updatability.READWRITE);
         propId.setIsRequired(true);
         propertyDefinitions.put(propId.getId(), propId);
+        
+//        propId = PropertyCreationHelper.createIdMultiDefinition(PropertyIds.,
+//                "allowedSourceTypes", Updatability.READWRITE);
+//        propId.setIsRequired(false);
+//        propertyDefinitions.put(propId.getId(), propId);
+//        
+//        propId = PropertyCreationHelper.createIdMultiDefinition(PropertyIds.,
+//                "allowedTargetTypes", Updatability.READWRITE);
+//        propId.setIsRequired(false);
+//        propertyDefinitions.put(propId.getId(), propId);
     }
 
     public static void mergePropertyDefinitions(Map<String, PropertyDefinition<?>> existingPpropertyDefinitions,

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryPolicyTypeDefinition.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryPolicyTypeDefinition.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryPolicyTypeDefinition.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryPolicyTypeDefinition.java Sun Mar 31 16:39:14 2013
@@ -94,7 +94,7 @@ public class InMemoryPolicyTypeDefinitio
         setIsControllableAcl(false);
         setIsControllablePolicy(false);
         setIsCreatable(true);
-        setIsFileable(true);
+        setIsFileable(false);
         setIsFulltextIndexed(false);
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryRelationshipTypeDefinition.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryRelationshipTypeDefinition.java?rev=1463002&r1=1463001&r2=1463002&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryRelationshipTypeDefinition.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryRelationshipTypeDefinition.java Sun Mar 31 16:39:14 2013
@@ -19,6 +19,7 @@
 
 package org.apache.chemistry.opencmis.inmemory.types;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -95,7 +96,7 @@ public class InMemoryRelationshipTypeDef
         setIsControllableAcl(false);
         setIsControllablePolicy(false);
         setIsCreatable(true);
-        setIsFileable(true);
+        setIsFileable(false);
         setIsFulltextIndexed(false);
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);
@@ -107,8 +108,8 @@ public class InMemoryRelationshipTypeDef
         setTypeMutability (typeMutability);
 
         // relationship specifics
-        setAllowedSourceTypes(null);
-        setAllowedTargetTypes(null);
+        setAllowedSourceTypes(Collections.<String> emptyList());
+        setAllowedTargetTypes(Collections.<String> emptyList());
 
         // set base properties
         Map<String, PropertyDefinition<?>> props = new HashMap<String, PropertyDefinition<?>>();