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 2015/12/11 16:21:32 UTC

svn commit: r1719450 [2/2] - in /chemistry/opencmis/trunk: chemistry-opencmis-server/chemistry-opencmis-server-inmemory/ chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/ chemistry-opencm...

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=1719450&r1=1719449&r2=1719450&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 Fri Dec 11 15:21:31 2015
@@ -30,6 +30,7 @@ import org.apache.chemistry.opencmis.com
 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.CmisVersion;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractTypeDefinition;
@@ -50,7 +51,7 @@ public class InMemoryRepositoryServiceIm
 
         validator.getRepositoryInfo(context, repositoryId, extension);
 
-        RepositoryInfo repoInfo = getRepositoryInfoFromStoreManager(repositoryId);
+        RepositoryInfo repoInfo = getRepositoryInfoFromStoreManager(context, repositoryId);
 
         return repoInfo;
     }
@@ -61,7 +62,7 @@ public class InMemoryRepositoryServiceIm
         List<RepositoryInfo> res = new ArrayList<RepositoryInfo>();
         List<String> repIds = fStoreManager.getAllRepositoryIds();
         for (String repId : repIds) {
-            res.add(fStoreManager.getRepositoryInfo(repId));
+            res.add(fStoreManager.getRepositoryInfo(context, repId));
         }
         return res;
     }
@@ -72,7 +73,7 @@ public class InMemoryRepositoryServiceIm
         validator.getTypeChildren(context, repositoryId, typeId, extension);
 
         boolean inclPropDefs = includePropertyDefinitions == null ? false : includePropertyDefinitions;
-        getRepositoryInfoFromStoreManager(repositoryId); // just to check if
+        getRepositoryInfoFromStoreManager(context, repositoryId); // just to check if
         // repository exists
 
         int skip = skipCount == null ? 0 : skipCount.intValue();
@@ -82,7 +83,8 @@ public class InMemoryRepositoryServiceIm
         List<TypeDefinitionContainer> children;
         if (typeId == null) {
             // spec says that base types must be returned in this case
-            children = fStoreManager.getRootTypes(repositoryId, inclPropDefs);
+            boolean cmis11 = context.getCmisVersion() != CmisVersion.CMIS_1_0;
+            children = fStoreManager.getRootTypes(repositoryId, inclPropDefs, cmis11);
         } else {
             children = getTypeDescendants(context, repositoryId, typeId, BigInteger.valueOf(1), inclPropDefs, null);
         }
@@ -116,7 +118,8 @@ public class InMemoryRepositoryServiceIm
 
         validator.getTypeDefinition(context, repositoryId, typeId, extension);
 
-        TypeDefinitionContainer tc = fStoreManager.getTypeById(repositoryId, typeId);
+        boolean cmis11 = context.getCmisVersion() != CmisVersion.CMIS_1_0;
+        TypeDefinitionContainer tc = fStoreManager.getTypeById(repositoryId, typeId, cmis11);
         if (tc != null) {
             return tc.getTypeDefinition();
         } else {
@@ -136,13 +139,14 @@ public class InMemoryRepositoryServiceIm
         }
 
         List<TypeDefinitionContainer> result = null;
+        boolean cmis11 = context.getCmisVersion() != CmisVersion.CMIS_1_0;
         if (typeId == null) {
             // spec says that depth must be ignored in this case
-            Collection<TypeDefinitionContainer> tmp = fStoreManager.getTypeDefinitionList(repositoryId, inclPropDefs);
+            Collection<TypeDefinitionContainer> tmp = fStoreManager.getTypeDefinitionList(repositoryId, inclPropDefs, cmis11);
             result = new ArrayList<TypeDefinitionContainer>(tmp);
         } else {
             TypeDefinitionContainer tc = fStoreManager.getTypeById(repositoryId, typeId, inclPropDefs,
-                    depth == null ? -1 : depth.intValue());
+                    depth == null ? -1 : depth.intValue(), cmis11);
             if (tc == null) {
                 throw new CmisInvalidArgumentException("unknown type id: " + typeId);
             } else {
@@ -196,8 +200,8 @@ public class InMemoryRepositoryServiceIm
         typeManager.deleteTypeDefinition(typeId);
     }
 
-    private RepositoryInfo getRepositoryInfoFromStoreManager(String repositoryId) {
-        RepositoryInfo repoInfo = fStoreManager.getRepositoryInfo(repositoryId);
+    private RepositoryInfo getRepositoryInfoFromStoreManager(CallContext context, String repositoryId) {
+        RepositoryInfo repoInfo = fStoreManager.getRepositoryInfo(context, repositoryId);
         if (null == repoInfo || !repoInfo.getId().equals(repositoryId)) {
             throw new CmisInvalidArgumentException("Unknown repository: " + repositoryId);
         }

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.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/InMemoryService.java?rev=1719450&r1=1719449&r2=1719450&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryService.java Fri Dec 11 15:21:31 2015
@@ -51,7 +51,7 @@ import org.apache.chemistry.opencmis.inm
 public class InMemoryService extends AbstractCmisService {
 
     private final StoreManager storeManager; // singleton root of everything
-
+    private final CallContext callContext;
     private final InMemoryRepositoryServiceImpl fRepSvc;
     private final InMemoryObjectServiceImpl fObjSvc;
     private final InMemoryNavigationServiceImpl fNavSvc;
@@ -66,8 +66,9 @@ public class InMemoryService extends Abs
         return storeManager;
     }
 
-    public InMemoryService(StoreManager sm) {
+    public InMemoryService(StoreManager sm, CallContext ctx) {
         storeManager = sm;
+        callContext = ctx;
         fRepSvc = new InMemoryRepositoryServiceImpl(storeManager);
         fNavSvc = new InMemoryNavigationServiceImpl(storeManager);
         fObjSvc = new InMemoryObjectServiceImpl(storeManager);
@@ -80,11 +81,7 @@ public class InMemoryService extends Abs
     }
 
     public CallContext getCallContext() {
-        return InMemoryServiceContext.getCallContext();
-    }
-
-    public void setCallContext(CallContext context) {
-        InMemoryServiceContext.setCallContext(context);
+        return callContext;
     }
 
     // --- repository service ---
@@ -92,7 +89,6 @@ public class InMemoryService extends Abs
     @Override
     public void close() {
         super.close();
-        setCallContext(null);
     }
 
     @Override

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=1719450&r1=1719449&r2=1719450&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 Fri Dec 11 15:21:31 2015
@@ -147,28 +147,19 @@ public class InMemoryServiceFactoryImpl
     public CmisService getService(CallContext context) {
         LOG.debug("start getService()");
         CallContext contextToUse = context;
-        // Attach the CallContext to a thread local context that can be
-        // accessed from everywhere
         // Some unit tests set their own context. So if we find one then we use
         // this one and ignore the provided one. Otherwise we set a new context.
         if (fUseOverrideCtx && null != overrideCtx) {
             contextToUse = overrideCtx;
         }
 
-        InMemoryService inMemoryService = InMemoryServiceContext.getCmisService();
-        if (inMemoryService == null) {
-            LOG.debug("Creating new InMemoryService instance!");
-            ConformanceCmisServiceWrapper wrapperService;
-            inMemoryService = new InMemoryService(storeManager);
-            wrapperService = new ConformanceCmisServiceWrapper(inMemoryService, DEFAULT_MAX_ITEMS_TYPES,
-                    DEFAULT_DEPTH_TYPES, DEFAULT_MAX_ITEMS_OBJECTS, DEFAULT_DEPTH_OBJECTS);
-            InMemoryServiceContext.setWrapperService(wrapperService);
-        }
-
-        inMemoryService.setCallContext(contextToUse);
+        LOG.debug("Creating new InMemoryService instance!");
+        ConformanceCmisServiceWrapper wrapperService;
+        InMemoryService inMemoryService = new InMemoryService(storeManager, contextToUse);
+        wrapperService = new ConformanceCmisServiceWrapper(inMemoryService, DEFAULT_MAX_ITEMS_TYPES,
+        		DEFAULT_DEPTH_TYPES, DEFAULT_MAX_ITEMS_OBJECTS, DEFAULT_DEPTH_OBJECTS);
 
-        LOG.debug("stop getService()");
-        return inMemoryService;
+        return inMemoryService; // wrapperService;
     }
 
     @Override
@@ -197,7 +188,6 @@ public class InMemoryServiceFactoryImpl
         if (null != cleanManager) {
             cleanManager.stopCleanRepositoryJob();
         }
-        InMemoryServiceContext.setWrapperService(null);
     }
 
     public StoreManager getStoreManger() {
@@ -402,13 +392,17 @@ public class InMemoryServiceFactoryImpl
         String doFillRepositoryStr = parameters.get(ConfigConstants.USE_REPOSITORY_FILER);
         String contentKindStr = parameters.get(ConfigConstants.CONTENT_KIND);
         boolean doFillRepository = doFillRepositoryStr == null ? false : Boolean.parseBoolean(doFillRepositoryStr);
+        // Simulate a runtime context with configuration parameters
+        // Attach the CallContext to a thread local context that can be
+        // accessed from everywhere
+        DummyCallContext ctx = new DummyCallContext();
 
         if (doFillRepository) {
 
             // create an initial temporary service instance to fill the
             // repository
 
-            InMemoryService svc = new InMemoryService(storeManager);
+            InMemoryService svc = new InMemoryService(storeManager, ctx);
 
             BindingsObjectFactory objectFactory = new BindingsObjectFactoryImpl();
 
@@ -493,10 +487,6 @@ public class InMemoryServiceFactoryImpl
                 gen.setFolderPropertiesToGenerate(propsToSet);
             }
 
-            // Simulate a runtime context with configuration parameters
-            // Attach the CallContext to a thread local context that can be
-            // accessed from everywhere
-            DummyCallContext ctx = new DummyCallContext();
             // create thread local storage and attach call context
             getService(ctx);
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.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/InMemoryVersioningServiceImpl.java?rev=1719450&r1=1719449&r2=1719450&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java Fri Dec 11 15:21:31 2015
@@ -31,6 +31,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
+import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
 import org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
@@ -55,12 +56,10 @@ import org.apache.chemistry.opencmis.ser
 public class InMemoryVersioningServiceImpl extends InMemoryAbstractServiceImpl {
 
     private InMemoryObjectServiceImpl fObjectService;
-    private AtomLinkInfoProvider fAtomLinkProvider;
 
     public InMemoryVersioningServiceImpl(StoreManager storeManager, InMemoryObjectServiceImpl objectService) {
         super(storeManager);
         fObjectService = objectService;
-        fAtomLinkProvider = new AtomLinkInfoProvider(fStoreManager);
     }
 
     public void cancelCheckOut(CallContext context, String repositoryId, String objectId, ExtensionsData extension) {
@@ -129,7 +128,7 @@ public class InMemoryVersioningServiceIm
         // additional information:
         if (context.isObjectInfoRequired()) {
             ObjectInfoImpl objectInfo = new ObjectInfoImpl();
-            fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfo);
+            fAtomLinkProvider.fillInformationForAtomLinks(context, repositoryId, so, objectInfo);
             objectInfos.addObjectInfo(objectInfo);
         }
     }
@@ -139,7 +138,8 @@ public class InMemoryVersioningServiceIm
 
         StoredObject so = validator.checkOut(context, repositoryId, objectId, extension, contentCopied);
 
-        TypeDefinition typeDef = getTypeDefinition(repositoryId, so);
+        boolean cmis11 = context.getCmisVersion() != CmisVersion.CMIS_1_0;
+        TypeDefinition typeDef = getTypeDefinition(repositoryId, so, cmis11);
         if (!typeDef.getBaseTypeId().equals(BaseTypeId.CMIS_DOCUMENT)) {
             throw new CmisNotSupportedException("Only documents can be checked-out.");
         } else if (!((DocumentTypeDefinition) typeDef).isVersionable()) {
@@ -180,7 +180,7 @@ public class InMemoryVersioningServiceIm
         // additional information:
         if (context.isObjectInfoRequired()) {
             ObjectInfoImpl objectInfo = new ObjectInfoImpl();
-            fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, pwc, objectInfo);
+            fAtomLinkProvider.fillInformationForAtomLinks(context, repositoryId, pwc, objectInfo);
             objectInfos.addObjectInfo(objectInfo);
         }
     }
@@ -228,7 +228,7 @@ public class InMemoryVersioningServiceIm
         // provide information for Atom links for version series:
         if (context.isObjectInfoRequired()) {
             ObjectInfoImpl objectInfo = new ObjectInfoImpl();
-            fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfo);
+            fAtomLinkProvider.fillInformationForAtomLinks(context, repositoryId, so, objectInfo);
             objectInfos.addObjectInfo(objectInfo);
         }
 
@@ -265,7 +265,7 @@ public class InMemoryVersioningServiceIm
         // provide information for Atom links for version series:
         if (context.isObjectInfoRequired()) {
             ObjectInfoImpl objectInfo = new ObjectInfoImpl();
-            fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfo);
+            fAtomLinkProvider.fillInformationForAtomLinks(context, repositoryId, so, objectInfo);
             objectInfos.addObjectInfo(objectInfo);
         }
 

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=1719450&r1=1719449&r2=1719450&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 Fri Dec 11 15:21:31 2015
@@ -26,6 +26,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
 import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
 import org.apache.chemistry.opencmis.server.support.TypeManager;
 
@@ -91,9 +92,11 @@ public interface StoreManager {
      * @param includePropertyDefinitions
      *            indicates whether to include property definitions in returned
      *            type
+     * @param cmis11
+     *            true if for CMIS version 1.1 false if for 1.0
      * @return map with type definition
      */
-    Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId, boolean includePropertyDefinitions);
+    Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId, boolean includePropertyDefinitions, boolean cmis11);
 
     /**
      * Retrieve a type definition for a give repository and type id.
@@ -102,9 +105,13 @@ public interface StoreManager {
      *            id of repository
      * @param typeId
      *            id of type definition
+     * @param cmis11
+     *            true if for CMIS version 1.1 false if for 1.0
+     * @param cmis11
+     *            true if for CMIS version 1.1 false if for 1.0
      * @return type definition
      */
-    TypeDefinitionContainer getTypeById(String repositoryId, String typeId);
+    TypeDefinitionContainer getTypeById(String repositoryId, String typeId, boolean cmis11);
 
     /**
      * Retrieve a type definition for a give repository and type id with or
@@ -119,10 +126,12 @@ public interface StoreManager {
      *            type
      * @param depth
      *            limit depth of type hierarchy in return (-1 means unlimited)
+     * @param cmis11
+     *            true if for CMIS version 1.1 false if for 1.0
      * @return type definition
      */
     TypeDefinitionContainer getTypeById(String repositoryId, String typeId, boolean includePropertyDefinitions,
-            int depth);
+            int depth, boolean cmis11);
 
     /**
      * Retrieve a factory to create CMIS data structures used as containers.
@@ -140,18 +149,22 @@ public interface StoreManager {
      *            id of repository
      * @param inclPropDefs
      *            true to include property definitions, false otherwise
+     * @param cmis11
+     *            true if for CMIS version 1.1 false if for 1.0
      * @return list of root types
      */
-    List<TypeDefinitionContainer> getRootTypes(String repositoryId, boolean inclPropDefs);
+    List<TypeDefinitionContainer> getRootTypes(String repositoryId, boolean inclPropDefs, boolean cmis11);
 
     /**
      * Retrieve the repository information for a repository.
      * 
+     * @param CallContext
+     *            call context of the corresponding call
      * @param repositoryId
      *            id of repository
      * @return repository information
      */
-    RepositoryInfo getRepositoryInfo(String repositoryId);
+    RepositoryInfo getRepositoryInfo(CallContext context, String repositoryId);
 
     /**
      * Retrieve the type manager for a given repository.
@@ -184,8 +197,10 @@ public interface StoreManager {
      * Execute a query against the repository (same parameter as the discovery
      * service query method.
      * 
+     * @param callContext
+     *            call context of this query
      * @param user
-     *            user execuing the query
+     *            user executing the query
      * @param repositoryId
      *            id of repository
      * @param statement
@@ -204,7 +219,7 @@ public interface StoreManager {
      *            items to skip
      * @return list of objects matching the query
      */
-    ObjectList query(String user, String repositoryId, String statement, Boolean searchAllVersions,
+    ObjectList query(CallContext callContext, String user, String repositoryId, String statement, Boolean searchAllVersions,
             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
             BigInteger maxItems, BigInteger skipCount);
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.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/StoredObject.java?rev=1719450&r1=1719449&r2=1719450&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/api/StoredObject.java Fri Dec 11 15:21:31 2015
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.chemistry.opencmis.commons.data.AllowableActions;
 import org.apache.chemistry.opencmis.commons.data.PropertyData;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
 
 /**
@@ -276,11 +277,13 @@ public interface StoredObject {
     /**
      * get the allowable actions of the object.
      * 
+     * @param context
+     *            call context of this call
      * @param user
      *            user requesting allowable actions
      * @return allowable actions of this object for the use
      */
-    AllowableActions getAllowableActions(String user);
+    AllowableActions getAllowableActions(CallContext context, String user);
 
     /**
      * check if the document can generate a renditions and rendition is visible

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=1719450&r1=1719449&r2=1719450&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 Fri Dec 11 15:21:31 2015
@@ -61,11 +61,11 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.RepositoryCapabilitiesImpl;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.RepositoryInfoImpl;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.TypeDefinitionContainerImpl;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
 import org.apache.chemistry.opencmis.inmemory.TypeCreator;
 import org.apache.chemistry.opencmis.inmemory.TypeManagerImpl;
 import org.apache.chemistry.opencmis.inmemory.query.InMemoryQueryProcessor;
-import org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceContext;
 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;
@@ -163,13 +163,12 @@ public class StoreManagerImpl implements
     }
 
     @Override
-    public TypeDefinitionContainer getTypeById(String repositoryId, String typeId) {
+    public TypeDefinitionContainer getTypeById(String repositoryId, String typeId, boolean cmis11) {
         TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
         if (null == typeManager) {
             throw new CmisObjectNotFoundException(UNKNOWN_REPOSITORY + repositoryId);
         }
 
-        boolean cmis11 = InMemoryServiceContext.getCallContext().getCmisVersion() != CmisVersion.CMIS_1_0;
         TypeDefinitionContainer tdc = typeManager.getTypeById(typeId);
         if (null != tdc && !cmis11) {
             TypeDefinition td = tdc.getTypeDefinition();
@@ -189,7 +188,7 @@ public class StoreManagerImpl implements
 
     @Override
     public TypeDefinitionContainer getTypeById(String repositoryId, String typeId, boolean includePropertyDefinitions,
-            int depthParam) {
+            int depthParam, boolean cmis11) {
         int depth = depthParam;
         TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
         if (null == typeManager) {
@@ -197,7 +196,6 @@ public class StoreManagerImpl implements
         }
 
         TypeDefinitionContainer tc = typeManager.getTypeById(typeId);
-        boolean cmis11 = InMemoryServiceContext.getCallContext().getCmisVersion() != CmisVersion.CMIS_1_0;
 
         if (tc != null) {
             if (depth == -1) {
@@ -218,17 +216,17 @@ public class StoreManagerImpl implements
 
     @Override
     public Collection<TypeDefinitionContainer> getTypeDefinitionList(String repositoryId,
-            boolean includePropertyDefinitions) {
+            boolean includePropertyDefinitions, boolean cmis11) {
         TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
         if (null == typeManager) {
             throw new CmisInvalidArgumentException(UNKNOWN_REPOSITORY + repositoryId);
         }
-        Collection<TypeDefinitionContainer> typeColl = getRootTypes(repositoryId, includePropertyDefinitions);
+        Collection<TypeDefinitionContainer> typeColl = getRootTypes(repositoryId, includePropertyDefinitions, cmis11);
         return typeColl;
     }
 
     @Override
-    public List<TypeDefinitionContainer> getRootTypes(String repositoryId, boolean includePropertyDefinitions) {
+    public List<TypeDefinitionContainer> getRootTypes(String repositoryId, boolean includePropertyDefinitions, boolean cmis11) {
         List<TypeDefinitionContainer> result;
         TypeManager typeManager = fMapRepositoryToTypeManager.get(repositoryId);
         if (null == typeManager) {
@@ -237,7 +235,6 @@ public class StoreManagerImpl implements
         List<TypeDefinitionContainer> rootTypes = typeManager.getRootTypes();
 
         // remove cmis:item and cmis:secondary for CMIS 1.0
-        boolean cmis11 = InMemoryServiceContext.getCallContext().getCmisVersion() != CmisVersion.CMIS_1_0;
         if (!cmis11) {
             rootTypes = new ArrayList<TypeDefinitionContainer>(rootTypes);
             TypeDefinitionContainer tcItem = null, tcSecondary = null;
@@ -280,13 +277,13 @@ public class StoreManagerImpl implements
 	}
     
     @Override
-    public RepositoryInfo getRepositoryInfo(String repositoryId) {
+    public RepositoryInfo getRepositoryInfo(CallContext context, String repositoryId) {
         ObjectStore sm = fMapRepositoryToObjectStore.get(repositoryId);
         if (null == sm) {
             return null;
         }
-
-        RepositoryInfo repoInfo = createRepositoryInfo(repositoryId);
+        boolean cmis11 = context.getCmisVersion().equals(CmisVersion.CMIS_1_1);
+        RepositoryInfo repoInfo = createRepositoryInfo(repositoryId, cmis11);
         return repoInfo;
     }
 
@@ -348,8 +345,7 @@ public class StoreManagerImpl implements
     }
 
     @SuppressWarnings("serial")
-    private RepositoryInfo createRepositoryInfo(String repositoryId) {
-        boolean cmis11 = InMemoryServiceContext.getCallContext().getCmisVersion() != CmisVersion.CMIS_1_0;
+    private RepositoryInfo createRepositoryInfo(String repositoryId, boolean cmis11) {
         ObjectStore objStore = getObjectStore(repositoryId);
         String rootFolderId = objStore.getRootFolder().getId();
         // repository info
@@ -574,13 +570,13 @@ public class StoreManagerImpl implements
     }
 
     @Override
-    public ObjectList query(String user, String repositoryId, String statement, Boolean searchAllVersions,
+    public ObjectList query(CallContext callContext, String user, String repositoryId, String statement, Boolean searchAllVersions,
             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
             BigInteger maxItems, BigInteger skipCount) {
         TypeManager tm = getTypeManager(repositoryId);
         ObjectStore objectStore = getObjectStore(repositoryId);
 
-        InMemoryQueryProcessor queryProcessor = new InMemoryQueryProcessor(getStore(repositoryId));
+        InMemoryQueryProcessor queryProcessor = new InMemoryQueryProcessor(getStore(repositoryId), callContext);
         ObjectList objList = queryProcessor.query(tm, objectStore, user, repositoryId, statement, searchAllVersions,
                 includeAllowableActions, includeRelationships, renditionFilter, maxItems, skipCount);
 

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=1719450&r1=1719449&r2=1719450&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 Fri Dec 11 15:21:31 2015
@@ -37,6 +37,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.data.ContentStream;
 import org.apache.chemistry.opencmis.commons.data.PropertyData;
 import org.apache.chemistry.opencmis.commons.impl.IOUtils;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
 import org.apache.chemistry.opencmis.inmemory.DataObjectCreator;
 import org.apache.chemistry.opencmis.inmemory.FilterParser;
@@ -503,8 +504,8 @@ public class StoredObjectImpl implements
     }
 
     @Override
-    public AllowableActions getAllowableActions(String user) {
-        AllowableActions actions = DataObjectCreator.fillAllowableActions(this, user);
+    public AllowableActions getAllowableActions(CallContext context, String user) {
+        AllowableActions actions = DataObjectCreator.fillAllowableActions(context, this, user);
         return actions;
     }
 

Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.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/PropertyCreationHelper.java?rev=1719450&r1=1719449&r2=1719450&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java Fri Dec 11 15:21:31 2015
@@ -69,6 +69,7 @@ import org.apache.chemistry.opencmis.com
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringImpl;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriDefinitionImpl;
 import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriImpl;
+import org.apache.chemistry.opencmis.commons.server.CallContext;
 import org.apache.chemistry.opencmis.commons.spi.BindingsObjectFactory;
 import org.apache.chemistry.opencmis.inmemory.DataObjectCreator;
 import org.apache.chemistry.opencmis.inmemory.FilterParser;
@@ -404,7 +405,7 @@ public final class PropertyCreationHelpe
         }
     }
 
-    public static ObjectData getObjectData(TypeManager tm, ObjectStore objectStore, StoredObject so, String filter,
+    public static ObjectData getObjectData(CallContext context, TypeManager tm, ObjectStore objectStore, StoredObject so, String filter,
             String user, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
             String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
 
@@ -420,7 +421,7 @@ public final class PropertyCreationHelpe
 
         // fill output object
         if (null != includeAllowableActions && includeAllowableActions) {
-            AllowableActions allowableActions = so.getAllowableActions(user);
+            AllowableActions allowableActions = so.getAllowableActions(context, user);
             od.setAllowableActions(allowableActions);
         }
 
@@ -442,7 +443,7 @@ public final class PropertyCreationHelpe
         }
 
         if (null != includeRelationships && includeRelationships != IncludeRelationships.NONE) {
-            od.setRelationships(DataObjectCreator.fillRelationships(tm, objectStore, includeRelationships, so, user));
+            od.setRelationships(DataObjectCreator.fillRelationships(context, tm, objectStore, includeRelationships, so, user));
         }
 
         if (null != includePolicyIds && includePolicyIds) {
@@ -459,7 +460,7 @@ public final class PropertyCreationHelpe
         return od;
     }
 
-    public static ObjectData getObjectDataQueryResult(TypeManager tm, ObjectStore objectStore,
+    public static ObjectData getObjectDataQueryResult(CallContext context, TypeManager tm, ObjectStore objectStore,
             TypeDefinition primaryType, StoredObject so, String user, Map<String, String> requestedProperties,
             Map<String, String> requestedFuncs, List<TypeDefinition> secondaryTypes, Boolean includeAllowableActions,
             IncludeRelationships includeRelationships, String renditionFilter) {
@@ -472,7 +473,7 @@ public final class PropertyCreationHelpe
 
         // fill output object
         if (null != includeAllowableActions && includeAllowableActions) {
-            AllowableActions allowableActions = so.getAllowableActions(user);
+            AllowableActions allowableActions = so.getAllowableActions(context, user);
             od.setAllowableActions(allowableActions);
         }
 
@@ -483,7 +484,7 @@ public final class PropertyCreationHelpe
         od.setIsExactAcl(true);
 
         if (null != includeRelationships && includeRelationships != IncludeRelationships.NONE) {
-            od.setRelationships(DataObjectCreator.fillRelationships(tm, objectStore, includeRelationships, so, user));
+            od.setRelationships(DataObjectCreator.fillRelationships(context, tm, objectStore, includeRelationships, so, user));
         }
 
         List<RenditionData> renditions = objectStore.getRenditions(so, renditionFilter, 0, 0);

Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tools/src/main/java/org/apache/chemistry/opencmis/tools/specexamples/SpecExamples.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tools/src/main/java/org/apache/chemistry/opencmis/tools/specexamples/SpecExamples.java?rev=1719450&r1=1719449&r2=1719450&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tools/src/main/java/org/apache/chemistry/opencmis/tools/specexamples/SpecExamples.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tools/src/main/java/org/apache/chemistry/opencmis/tools/specexamples/SpecExamples.java Fri Dec 11 15:21:31 2015
@@ -87,7 +87,7 @@ public class SpecExamples {
     private static final String TOPLEVEL_TYPE = "DocumentTopLevel";
     private static final String VERSIONED_TYPE = "VersionableType";
     private static final String VERSIONED_PROP = "VersionedStringProp";
-    private static final String LOGDIR = System.getProperty("java.io.tmpdir");// +
+    private static final String LOGDIR = "/Users/d058463/temp/cmis"; //System.getProperty("java.io.tmpdir");// +
     // File.separator;
     private static final String ROOT_URL = "http://localhost:8080/inmemory";
     private static final String ROOT_URL_OASIS = "http://www.example.com:8080/inmemory";
@@ -341,7 +341,7 @@ public class SpecExamples {
 
     private void getContentChanges(String token) {
         LOG.debug("getContentChanges");
-        Holder<String> changeLogToken = new Holder<String>("token");
+        Holder<String> changeLogToken = new Holder<String>("token-000010");
         discSvc.getContentChanges(repositoryId, changeLogToken, false, "*", false, false, null, null);
         renameFiles("getContentChanges");
         LOG.debug("getContentChanges() done.");