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 2012/02/08 22:25:15 UTC

svn commit: r1242106 - 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/server/ main/java/org/apache/chemis...

Author: jens
Date: Wed Feb  8 21:25:14 2012
New Revision: 1242106

URL: http://svn.apache.org/viewvc?rev=1242106&view=rev
Log:
merge type mutability code from 1.1 into main

Added:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceMutabilityTest.java
Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryServiceFactoryImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/TypeManagerCreatable.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/ObjectStoreImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryDocumentTypeDefinition.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryFolderTypeDefinition.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryPolicyTypeDefinition.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryRelationshipTypeDefinition.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.java
    chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceTest.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.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/TypeManagerImpl.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/TypeManagerImpl.java Wed Feb  8 21:25:14 2012
@@ -28,6 +28,8 @@ import java.util.Map.Entry;
 import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
 import org.apache.chemistry.opencmis.commons.impl.Converter;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyDefinition;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.TypeDefinitionContainerImpl;
@@ -142,14 +144,14 @@ public class TypeManagerImpl implements 
      */
     public void addTypeDefinition(TypeDefinition cmisType) {
         if (fTypesMap.containsKey(cmisType.getId())) {
-            throw new RuntimeException("You cannot add type with id " + cmisType.getId()
+            throw new CmisConstraintException("You cannot add type with id " + cmisType.getId()
                     + " because it already exists.");
         }
 
         TypeDefinitionContainerImpl typeContainer = new TypeDefinitionContainerImpl(cmisType);
 
         if (!fTypesMap.containsKey(cmisType.getParentTypeId())) {
-            throw new RuntimeException("Cannot add type, because parent with id " + cmisType.getParentTypeId()
+            throw new CmisConstraintException("Cannot add type, because parent with id " + cmisType.getParentTypeId()
                     + " does not exist.");
         }
 
@@ -166,6 +168,19 @@ public class TypeManagerImpl implements 
         // add type to type map
         fTypesMap.put(cmisType.getId(), typeContainer);
     }
+    
+    public void updateTypeDefinition(TypeDefinition typeDefinition) {
+        throw new CmisNotSupportedException("updating a type definition is not supported.");
+    }
+
+    /**
+     * Remove a type from a type system
+     * @param typeId
+     */
+    public void deleteTypeDefinition(String typeId) {
+        fTypesMap.remove(typeId);       
+    }
+
 
     /**
      * Remove all types from the type system. After this call only the default

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.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/server/InMemoryRepositoryServiceImpl.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java Wed Feb  8 21:25:14 2012
@@ -33,7 +33,10 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.TypeDefinitionListImpl;
 import org.apache.chemistry.opencmis.commons.server.CallContext;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.TypeManagerCreatable;
 
 public class InMemoryRepositoryServiceImpl extends InMemoryAbstractServiceImpl {
 
@@ -141,6 +144,70 @@ public class InMemoryRepositoryServiceIm
         return result;
     }
 
+    public void createTypeDefinition(String repositoryId, Holder<TypeDefinition> type, ExtensionsData extension) {
+
+        TypeManagerCreatable typeManager = fStoreManager.getTypeManager(repositoryId);
+        if (null == typeManager)
+            throw new CmisInvalidArgumentException("Unknown repository " + repositoryId);
+        
+        String typeId = type.getValue().getId();
+
+        if (null == typeId)
+            throw new CmisInvalidArgumentException("Cannot add type, type id is required.");
+        
+        if (typeManager.getTypeById(typeId) != null)
+            throw new CmisInvalidArgumentException("Cannot add type "
+                    + typeId + ", type already exists");
+        
+        String parentTypeId = type.getValue().getParentTypeId();
+
+        if (null == parentTypeId)
+            throw new CmisInvalidArgumentException("Cannot add type, parent type id is required.");
+        
+        if (typeManager.getTypeById(parentTypeId) == null)
+            throw new CmisInvalidArgumentException("Cannot add type "
+                    + parentTypeId + " is unknown.");
+
+        typeManager.addTypeDefinition(type.getValue());
+    }
+
+    public void updateTypeDefinition(String repositoryId, Holder<TypeDefinition> type, ExtensionsData extension) {
+        String typeId = type.getValue().getId();
+        TypeManagerCreatable typeManager = fStoreManager.getTypeManager(repositoryId);
+        if (null == typeManager)
+            throw new CmisInvalidArgumentException("Unknown repository " + repositoryId);
+        
+        TypeDefinitionContainer typeDefC = typeManager.getTypeById(typeId);
+        if (null == typeDefC)
+            throw new CmisInvalidArgumentException("Cannot update type unknown type id: " + typeId);
+
+        typeManager.updateTypeDefinition(type.getValue());
+    }
+
+    public void deleteTypeDefinition(String repositoryId, String typeId, ExtensionsData extension) {
+        
+        TypeManagerCreatable typeManager = fStoreManager.getTypeManager(repositoryId);
+        if (null == typeManager)
+            throw new CmisInvalidArgumentException("Unknown repository " + repositoryId);
+        
+        TypeDefinitionContainer typeDefC = typeManager.getTypeById(typeId);
+        if (null == typeDefC)
+            throw new CmisInvalidArgumentException("Cannot delete type unknown type id: " + typeId);
+
+        TypeDefinition typeDef =  typeDefC.getTypeDefinition();
+        // TODO: re-enable when CMIS 1.1 is supported.
+//        if (!typeDef.getTypeMutability().supportsDelete()) {
+//            throw new CmisInvalidArgumentException("type definition " + typeId + " cannot be deleted, deletion is not supported for type id " + typeId);            
+//        }
+
+        ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
+        if (objectStore.isTypeInUse(typeId)) {
+            throw new CmisInvalidArgumentException("type definition " + typeId + " cannot be deleted, type is in use.");            
+        }
+        
+        typeManager.deleteTypeDefinition(typeId);        
+    }
+    
     private RepositoryInfo getRepositoryInfoFromStoreManager(String repositoryId) {
         RepositoryInfo repoInfo = fStoreManager.getRepositoryInfo(repositoryId);
         if (null == repoInfo || !repoInfo.getId().equals(repositoryId)) {

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryServiceFactoryImpl.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/server/InMemoryServiceFactoryImpl.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryServiceFactoryImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryServiceFactoryImpl.java Wed Feb  8 21:25:14 2012
@@ -153,6 +153,10 @@ public class InMemoryServiceFactoryImpl 
         threadLocalService = null;
     }
 
+    public StoreManager getStoreManger() {
+        return storeManager;
+    }
+    
     private void initStorageManager(Map<String, String> parameters) {
         // initialize in-memory management
         String repositoryClassName = (String) parameters.get(ConfigConstants.REPOSITORY_CLASS);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.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/api/ObjectStore.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/ObjectStore.java Wed Feb  8 21:25:14 2012
@@ -227,4 +227,14 @@ public interface ObjectStore {
      */
     Acl applyAcl(StoredObject so, Acl aces, AclPropagation aclPropagation, String principalId);
     
+    /**
+     * Check if this store contains any object with the given type id
+     * 
+     * @param typeId
+     *      id of type definition to check
+     * @return
+     *      true if at least one object in the store has the given type, false
+     *      if no objects exist having this type
+     */
+    boolean isTypeInUse(String typeId);
 }
\ No newline at end of file

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.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/api/StoreManager.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoreManager.java Wed Feb  8 21:25:14 2012
@@ -27,7 +27,6 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
-import org.apache.chemistry.opencmis.server.support.TypeManager;
 
 /**
  * interface to a repository implementation. This interface is the entry point
@@ -162,7 +161,7 @@ public interface StoreManager {
      * @return
      *      type manager for this repository or null if repository is unknown
      */
-    TypeManager getTypeManager(String repositoryId);
+    TypeManagerCreatable getTypeManager(String repositoryId);
     
     /**
      * Execute a query against the repository (same parameter as the discovery service

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/TypeManagerCreatable.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/api/TypeManagerCreatable.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/TypeManagerCreatable.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/TypeManagerCreatable.java Wed Feb  8 21:25:14 2012
@@ -23,14 +23,30 @@ import org.apache.chemistry.opencmis.ser
 
 public interface TypeManagerCreatable extends TypeManager {
     
+
     /**
      * Add a type to the type system. Add all properties from inherited types,
      * add type to children of parent types.
-     *
-     * @param repositoryId
-     *            repository to which the type is added
+     * 
      * @param cmisType
      *            new type to add
-     */  
-    void addTypeDefinition(TypeDefinition cmisType);
+     */
+    public abstract void addTypeDefinition(TypeDefinition typeDefinition);
+    
+    /**
+     * Modify an existing type definition
+     * 
+     * @param typeDefinition
+     *          type to be modified
+     */    
+    public void updateTypeDefinition(TypeDefinition typeDefinition);
+
+   /**
+     * Delete a type from the type system. Delete will succeed only if type is not in use.
+     * Otherwise an exception is thrown
+     * 
+     * @param cmisType
+     *            type to delete
+     */
+    public abstract void deleteTypeDefinition(String typeId);
 }

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=1242106&r1=1242105&r2=1242106&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 Wed Feb  8 21:25:14 2012
@@ -588,4 +588,14 @@ public class ObjectStoreImpl implements 
         return result;
     }
 
+    public boolean isTypeInUse(String typeId) {
+        // iterate over all the objects and check for each if the type matches
+        for (String objectId : getIds()) {
+            StoredObject so = getObjectById(objectId);
+            if (so.getTypeId().equals(typeId))
+                return true;
+        }
+        return false;
+    }
+
 }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.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/StoreManagerImpl.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoreManagerImpl.java Wed Feb  8 21:25:14 2012
@@ -61,6 +61,7 @@ import org.apache.chemistry.opencmis.inm
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.CmisServiceValidator;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
 import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.TypeManagerCreatable;
 import org.apache.chemistry.opencmis.server.support.TypeManager;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -480,8 +481,8 @@ public class StoreManagerImpl implements
         return tdcClone;
     }
 
-    public TypeManager getTypeManager(String repositoryId) {
-        TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
+    public TypeManagerCreatable getTypeManager(String repositoryId) {
+        TypeManagerCreatable typeManager = fMapRepositoryToTypeManager.get(repositoryId);
         return typeManager;
     }
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryDocumentTypeDefinition.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/InMemoryDocumentTypeDefinition.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryDocumentTypeDefinition.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryDocumentTypeDefinition.java Wed Feb  8 21:25:14 2012
@@ -102,6 +102,13 @@ public class InMemoryDocumentTypeDefinit
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);
 
+        // TODO: add with CMIS 1.1 extensions
+//        TypeMutabilityCapabilitiesImpl caps = new TypeMutabilityCapabilitiesImpl();
+//        caps.setSupportsCreate(createAndDeletable);
+//        caps.setSupportsUpdate(false);
+//        caps.setSupportsDelete(createAndDeletable);
+//        super.setTypeMutability(caps);
+
         Map<String, PropertyDefinition<?>> props = new HashMap<String, PropertyDefinition<?>>();
         setPropertyDefinitions(props); // set initial empty set of properties
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryFolderTypeDefinition.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/InMemoryFolderTypeDefinition.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryFolderTypeDefinition.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/InMemoryFolderTypeDefinition.java Wed Feb  8 21:25:14 2012
@@ -98,6 +98,13 @@ public class InMemoryFolderTypeDefinitio
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);
 
+        // TODO: add with CMIS 1.1 extensions
+//        TypeMutabilityCapabilitiesImpl caps = new TypeMutabilityCapabilitiesImpl();
+//        caps.setSupportsCreate(createAndDeletable);
+//        caps.setSupportsUpdate(false);
+//        caps.setSupportsDelete(createAndDeletable);
+//        super.setTypeMutability(caps);
+
         Map<String, PropertyDefinition<?>> props = new HashMap<String, PropertyDefinition<?>>();
         setPropertyDefinitions(props); // set initial empty set of properties
     }

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=1242106&r1=1242105&r2=1242106&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 Wed Feb  8 21:25:14 2012
@@ -98,6 +98,13 @@ public class InMemoryPolicyTypeDefinitio
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);
 
+        // TODO: add with CMIS 1.1 extensions
+//        TypeMutabilityCapabilitiesImpl caps = new TypeMutabilityCapabilitiesImpl();
+//        caps.setSupportsCreate(createAndDeletable);
+//        caps.setSupportsUpdate(false);
+//        caps.setSupportsDelete(createAndDeletable);
+//        super.setTypeMutability(caps);
+
         // set base properties
         Map<String, PropertyDefinition<?>> props = new HashMap<String, PropertyDefinition<?>>();
         setPropertyDefinitions(props); // set initial empty set of properties

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=1242106&r1=1242105&r2=1242106&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 Wed Feb  8 21:25:14 2012
@@ -99,6 +99,13 @@ public class InMemoryRelationshipTypeDef
         setIsIncludedInSupertypeQuery(true);
         setIsQueryable(false);
 
+        // TODO: add with CMIS 1.1 extensions
+//        TypeMutabilityCapabilitiesImpl caps = new TypeMutabilityCapabilitiesImpl();
+//        caps.setSupportsCreate(createAndDeletable);
+//        caps.setSupportsUpdate(false);
+//        caps.setSupportsDelete(createAndDeletable);
+//        super.setTypeMutability(caps);
+
         // relationship specifics
         setAllowedSourceTypes(null);
         setAllowedTargetTypes(null);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.java Wed Feb  8 21:25:14 2012
@@ -58,7 +58,6 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.spi.ObjectService;
 import org.apache.chemistry.opencmis.commons.spi.RepositoryService;
 import org.apache.chemistry.opencmis.commons.spi.VersioningService;
-import org.apache.chemistry.opencmis.inmemory.RepositoryServiceTest.UnitTestRepositoryInfo;
 import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl;
 import org.apache.chemistry.opencmis.inmemory.storedobj.impl.ContentStreamDataImpl;
 import org.apache.commons.logging.Log;
@@ -100,6 +99,10 @@ public class AbstractServiceTest {
         fTypeCreatorClassName = typeCreatorClassName;
     }
 
+    protected String getTypeCreatorClass() {
+        return fTypeCreatorClassName;
+    }
+
     protected void setUp() {
         // super.setUp();
         LOG.debug("Initializing InMemory Test with type creator class: " + fTypeCreatorClassName);
@@ -109,9 +112,6 @@ public class AbstractServiceTest {
         parameters.put(ConfigConstants.TYPE_CREATOR_CLASS, fTypeCreatorClassName);
         parameters.put(ConfigConstants.REPOSITORY_ID, REPOSITORY_ID);
 
-        // attach repository info to the session:
-        parameters.put(ConfigConstants.REPOSITORY_INFO_CREATOR_CLASS, UnitTestRepositoryInfo.class.getName());
-
         // give subclasses a chance to provide additional parameters for special
         // tests
         addParameters(parameters);
@@ -415,4 +415,9 @@ public class AbstractServiceTest {
         assertTrue(pd.getFirstValue() instanceof String);
         return (String) pd.getFirstValue();
     }
+    
+    protected void deleteDocument(String docId) {
+        fObjSvc.deleteObject(fRepositoryId, docId, true, null);
+    }
+
 }

Added: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceMutabilityTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceMutabilityTest.java?rev=1242106&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceMutabilityTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceMutabilityTest.java Wed Feb  8 21:25:14 2012
@@ -0,0 +1,243 @@
+/*
+ * 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;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.commons.data.ContentStream;
+import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.data.Properties;
+import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
+import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
+import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.Updatability;
+import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
+import org.apache.chemistry.opencmis.commons.spi.Holder;
+import org.apache.chemistry.opencmis.inmemory.server.InMemoryObjectServiceImpl;
+import org.apache.chemistry.opencmis.inmemory.server.InMemoryRepositoryServiceImpl;
+import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl;
+import org.apache.chemistry.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.chemistry.opencmis.inmemory.types.InMemoryDocumentTypeDefinition;
+import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Temporary test class until CMIS 1.1 bindings are completed. Until then
+ * we use a special setup procedure to directly connect to the repository
+ * service implementation of InMemory.
+ * 
+ * @author Jens
+ */
+public class RepositoryServiceMutabilityTest extends AbstractServiceTest {
+
+    private static final Log log = LogFactory.getLog(RepositoryServiceTest.class);
+    private static final String REPOSITORY_ID = "UnitTestRepository";
+    private static final String TYPE_ID_MUTABILITY = "BookTypeAddedLater";
+
+    private InMemoryRepositoryServiceImpl repSvc;
+    private InMemoryObjectServiceImpl objSvc;
+
+    @Override
+    @Before
+    public void setUp() {
+        super.setTypeCreatorClass(UnitTestTypeSystemCreator.class.getName());
+        super.setUp();
+        
+        Map<String, String> parameters = new HashMap<String, String>();
+
+        // attach repository info to the session:
+        parameters.put(ConfigConstants.TYPE_CREATOR_CLASS, getTypeCreatorClass());
+        parameters.put(ConfigConstants.REPOSITORY_ID, REPOSITORY_ID);
+        
+        InMemoryServiceFactoryImpl factory = new InMemoryServiceFactoryImpl();
+        factory.init(parameters);
+        StoreManager storeManager = factory.getStoreManger();
+        repSvc = new InMemoryRepositoryServiceImpl(storeManager);
+        objSvc = new InMemoryObjectServiceImpl(storeManager);
+    }
+
+    @Override
+    @After
+    public void tearDown() {
+        super.tearDown();
+    }
+
+    @Test
+    public void testRepositoryInfo() {
+        log.info("starting testRepositoryInfo() ...");
+        List<RepositoryInfo> repositories = repSvc.getRepositoryInfos(fTestCallContext, null);
+        assertNotNull(repositories);
+        assertFalse(repositories.isEmpty());
+
+        log.info("geRepositoryInfo(), found " + repositories.size() + " repository/repositories).");
+
+        for (RepositoryInfo repository : repositories) {
+            RepositoryInfo repository2 = repSvc.getRepositoryInfo(fTestCallContext, repository.getId(), null);
+            assertNotNull(repository2);
+            assertEquals(repository.getId(), repository2.getId());
+            log.info("found repository" + repository2.getId());
+        }
+
+        log.info("... testRepositoryInfo() finished.");
+    }
+    
+
+    @Test
+    public void testTypeMutabilityCreation() throws Exception {
+        log.info("");
+        log.info("starting testTypeMutabilityCreation() ...");
+        TypeDefinition typeDefRef = getTypeForAddingAtRuntime();
+        String repositoryId = getRepositoryId();
+        // add type.
+        repSvc.createTypeDefinition(repositoryId, new Holder<TypeDefinition>(typeDefRef), null);
+        TypeDefinition type = repSvc.getTypeDefinition(fTestCallContext, repositoryId, typeDefRef.getId(), null);
+        assertEquals(typeDefRef.getId(), type.getId());
+        assertEquals(typeDefRef.getDescription(), type.getDescription());
+        assertEquals(typeDefRef.getDisplayName(), type.getDisplayName());
+        assertEquals(typeDefRef.getLocalName(), type.getLocalName());
+        assertEquals(typeDefRef.getLocalNamespace(), type.getLocalNamespace());
+        RepositoryServiceTest.containsAllBasePropertyDefinitions(type);
+        log.info("... testTypeMutabilityCreation() finished.");
+    }
+
+    @Test
+    public void testTypeMutabilityUpdate() throws Exception {
+        log.info("");
+        log.info("starting testTypeMutabilityUpdate() ...");
+        TypeDefinition typeDefRef = getTypeForAddingAtRuntime();
+        String repositoryId = getRepositoryId();
+        repSvc.createTypeDefinition(repositoryId, new Holder<TypeDefinition>(typeDefRef), null);
+        // update type.
+        try {
+            repSvc.updateTypeDefinition(repositoryId, new Holder<TypeDefinition>(typeDefRef), null);
+            fail("updating a type should throw exception.");
+        } catch (Exception e) {
+            assert(e instanceof CmisNotSupportedException);
+        }
+        log.info("... testTypeMutabilityUpdate() finished.");
+    }
+    @Test
+    public void testTypeMutabilityDeletion() throws Exception {
+        log.info("");
+        log.info("starting testTypeMutabilityDeletion() ...");
+        TypeDefinition typeDefRef = getTypeForAddingAtRuntime();
+        String repositoryId = getRepositoryId();
+        repSvc.createTypeDefinition(repositoryId, new Holder<TypeDefinition>(typeDefRef), null);
+        
+        String docId = createDoc("Book1", getRootFolderId(REPOSITORY_ID), TYPE_ID_MUTABILITY);
+        
+        // try deleting type, should fail, because in use.
+        try {
+            repSvc.deleteTypeDefinition(repositoryId, TYPE_ID_MUTABILITY, null);
+            fail("deleting a type which is in use should throw exception.");
+        } catch (Exception e) {
+            assert(e instanceof CmisInvalidArgumentException);
+        }
+
+        objSvc.deleteObject(fTestCallContext, fRepositoryId, docId, true, null);
+        
+        try {
+            repSvc.deleteTypeDefinition(repositoryId, TYPE_ID_MUTABILITY, null);
+        } catch (Exception e) {
+            fail("deleting a type which is in not in use should not throw exception! Exception is: " + e);
+        }
+        
+        try {
+            repSvc.getTypeDefinition(fTestCallContext, repositoryId, TYPE_ID_MUTABILITY, null);
+            fail("getting a type after it was deleted should fail.");
+        } catch (Exception e) {
+        }
+
+        try {
+            repSvc.deleteTypeDefinition(repositoryId, BaseTypeId.CMIS_DOCUMENT.name(), null);
+            fail("deleting a CMIS base type throw exception.");
+        } catch (Exception e) {
+            assert(e instanceof CmisInvalidArgumentException);
+        }
+        try {
+            repSvc.deleteTypeDefinition(repositoryId, BaseTypeId.CMIS_FOLDER.name(), null);
+            fail("deleting a CMIS base type throw exception.");
+        } catch (Exception e) {
+            assert(e instanceof CmisInvalidArgumentException);
+        }
+
+        log.info("... testTypeMutabilityDeletion() finished.");
+    }
+
+    private String getRepositoryId() {
+        List<RepositoryInfo> repositories = repSvc.getRepositoryInfos(fTestCallContext, null);
+        RepositoryInfo repository = repositories.get(0);
+        assertNotNull(repository);
+        return repository.getId();
+    }
+
+    private String getRootFolderId(String repositoryId) {
+        RepositoryInfo repository = repSvc.getRepositoryInfo(fTestCallContext, repositoryId, null);
+        assertNotNull(repository);
+        return repository.getRootFolderId();
+    }
+
+    private TypeDefinition getTypeForAddingAtRuntime() {
+        
+        InMemoryDocumentTypeDefinition cmisLaterType = new InMemoryDocumentTypeDefinition(TYPE_ID_MUTABILITY,
+                "Type with two properties", InMemoryDocumentTypeDefinition.getRootDocumentType());
+
+        Map<String, PropertyDefinition<?>> propertyDefinitions = new HashMap<String, PropertyDefinition<?>>();
+
+        PropertyIntegerDefinitionImpl prop1 = PropertyCreationHelper.createIntegerDefinition("Number",
+                "Sample Int Property", Updatability.READWRITE);
+        propertyDefinitions.put(prop1.getId(), prop1);
+
+        PropertyStringDefinitionImpl prop2 = PropertyCreationHelper.createStringDefinition("Title",
+                "Sample String Property", Updatability.READWRITE);
+        propertyDefinitions.put(prop2.getId(), prop2);
+        
+        cmisLaterType.addCustomPropertyDefinitions(propertyDefinitions);
+        
+        return cmisLaterType;
+    }
+
+    String createDoc(String name, String folderId, String typeId) {
+        ContentStream contentStream = null;
+        List<String> policies = null;
+        ExtensionsData extension = null;
+
+        Properties props = createDocumentProperties(name, typeId);
+
+        String id = objSvc.createDocument(fTestCallContext, fRepositoryId, props, folderId, contentStream,
+                VersioningState.NONE, policies, null, null, extension);
+        return id;        
+    }
+}

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceTest.java?rev=1242106&r1=1242105&r2=1242106&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/test/java/org/apache/chemistry/opencmis/inmemory/RepositoryServiceTest.java Wed Feb  8 21:25:14 2012
@@ -27,41 +27,19 @@ import static org.junit.Assert.fail;
 
 import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.chemistry.opencmis.commons.PropertyIds;
 import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
-import org.apache.chemistry.opencmis.commons.definitions.Choice;
 import org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList;
 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityAcl;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityChanges;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityContentStreamUpdates;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityJoin;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
-import org.apache.chemistry.opencmis.commons.enums.CapabilityRenditions;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.ChoiceImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyHtmlDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriDefinitionImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.RepositoryCapabilitiesImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.RepositoryInfoImpl;
 import org.apache.chemistry.opencmis.inmemory.types.DocumentTypeCreationHelper;
-import org.apache.chemistry.opencmis.inmemory.types.InMemoryDocumentTypeDefinition;
-import org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.junit.After;
@@ -77,46 +55,8 @@ public class RepositoryServiceTest exten
 
     private static final Log log = LogFactory.getLog(RepositoryServiceTest.class);
     private static final String REPOSITORY_ID = "UnitTestRepository";
+    private static final String TYPE_ID_MUTABILITY = "BookTypeAddedLater";
 
-    public static class UnitTestRepositoryInfo implements RepositoryInfoCreator {
-
-        public RepositoryInfo createRepositoryInfo() {
-            RepositoryCapabilitiesImpl caps = new RepositoryCapabilitiesImpl();
-            caps.setAllVersionsSearchable(false);
-            caps.setCapabilityAcl(CapabilityAcl.NONE);
-            caps.setCapabilityChanges(CapabilityChanges.NONE);
-            caps.setCapabilityContentStreamUpdates(CapabilityContentStreamUpdates.ANYTIME);
-            caps.setCapabilityJoin(CapabilityJoin.NONE);
-            caps.setCapabilityQuery(CapabilityQuery.NONE);
-            caps.setCapabilityRendition(CapabilityRenditions.NONE);
-            caps.setIsPwcSearchable(false);
-            caps.setIsPwcUpdatable(true);
-            caps.setSupportsGetDescendants(true);
-            caps.setSupportsGetFolderTree(true);
-            caps.setSupportsMultifiling(false);
-            caps.setSupportsUnfiling(true);
-            caps.setSupportsVersionSpecificFiling(false);
-
-            RepositoryInfoImpl repositoryInfo = new RepositoryInfoImpl();
-            repositoryInfo.setId(REPOSITORY_ID);
-            repositoryInfo.setName("InMemory Repository");
-            repositoryInfo.setDescription("InMemory Test Repository");
-            repositoryInfo.setCmisVersionSupported("0.7");
-            repositoryInfo.setCapabilities(caps);
-            repositoryInfo.setRootFolder("/");
-            repositoryInfo.setAclCapabilities(null);
-            repositoryInfo.setPrincipalAnonymous("anonymous");
-            repositoryInfo.setPrincipalAnyone("anyone");
-            repositoryInfo.setThinClientUri(null);
-            repositoryInfo.setChangesIncomplete(Boolean.TRUE);
-            repositoryInfo.setChangesOnType(null);
-            repositoryInfo.setLatestChangeLogToken(null);
-            repositoryInfo.setVendorName("OpenCMIS");
-            repositoryInfo.setProductName("OpenCMIS Client");
-            repositoryInfo.setProductVersion("0.1");
-            return repositoryInfo;
-        }
-    }
 
     @Override
     @Before
@@ -493,6 +433,7 @@ public class RepositoryServiceTest exten
         log.info("... testInheritedProperties() finished.");
     }
 
+
     private String getRepositoryId() {
         List<RepositoryInfo> repositories = fRepSvc.getRepositoryInfos(null);
         RepositoryInfo repository = repositories.get(0);
@@ -500,15 +441,6 @@ public class RepositoryServiceTest exten
         return repository.getId();
     }
 
-    // private boolean containsTypeById(String typeId,
-    // List<TypeDefinitionContainer> types) {
-    // for (TypeDefinitionContainer type : types) {
-    // if (type.getTypeDefinition().getId().equals(typeId))
-    // return true;
-    // }
-    // return false;
-    // }
-
     private boolean containsTypeByIdRecursive(String typeId, List<TypeDefinitionContainer> types) {
         for (TypeDefinitionContainer type : types) {
             if (containsTypeByIdRecursive(typeId, type)) {
@@ -531,7 +463,7 @@ public class RepositoryServiceTest exten
         return false;
     }
 
-    private static void containsAllBasePropertyDefinitions(TypeDefinition typeDef) {
+    static void containsAllBasePropertyDefinitions(TypeDefinition typeDef) {
         Map<String, PropertyDefinition<?>> propDefs = typeDef.getPropertyDefinitions();
         String baseTypeId = typeDef.getBaseTypeId().value();
 
@@ -601,4 +533,5 @@ public class RepositoryServiceTest exten
 
         return flattened;
     }
+    
 }