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 2010/03/01 18:20:17 UTC
svn commit: r917600 [1/3] - in
/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src:
main/java/org/apache/opencmis/inmemory/
main/java/org/apache/opencmis/inmemory/clientprovider/
main/java/org/apache/opencmis/inmemory/serve...
Author: jens
Date: Mon Mar 1 17:20:16 2010
New Revision: 917600
URL: http://svn.apache.org/viewvc?rev=917600&view=rev
Log:
InMemory Refactoring:
move main implementation of services from client provider to server interface.
This prevents additional roundtrips for ObjectHolder in AtomBinding
Added:
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/AbstractService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemoryProvider.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DiscoveryServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DummyCallContext.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/MultiFilingServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/NavigationServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/ObjectServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/RepositoryServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AbstractServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryNavigationServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryObjectServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryRepositoryServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryVersioningServiceImpl.java
Removed:
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/AbstractServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/CmisInMemoryProvider.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/MultiFilingServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/NavigationServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/ObjectServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/RepositoryServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/VersioningServiceImpl.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryNavigationService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryObjectService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryRepositoryService.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryVersioningService.java
Modified:
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/TypeValidator.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemorySpi.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/RuntimeContext.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/ServiceFactory.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/test/java/org/apache/opencmis/inmemory/AbstractServiceTst.java
incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/test/java/org/apache/opencmis/inmemory/VersioningTest.java
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/TypeValidator.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/TypeValidator.java?rev=917600&r1=917599&r2=917600&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/TypeValidator.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/TypeValidator.java Mon Mar 1 17:20:16 2010
@@ -47,7 +47,7 @@
*/
public class TypeValidator {
- static void validateRequiredSystemProperties(PropertiesData properties) {
+ public static void validateRequiredSystemProperties(PropertiesData properties) {
if (properties == null || properties.getProperties() == null)
throw new RuntimeException("Cannot create object, no properties are given");
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/AbstractService.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/AbstractService.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/AbstractService.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/AbstractService.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,37 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import org.apache.opencmis.server.spi.CallContext;
+
+public class AbstractService {
+ protected CallContext fDummyCallContext;
+
+ protected AbstractService() {
+ fDummyCallContext = null; // currently always set to null
+ }
+
+ public void setCallContext(CallContext ctx) {
+ fDummyCallContext = ctx;
+ }
+
+ public CallContext getCallContext() {
+ return fDummyCallContext;
+ }
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemoryProvider.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemoryProvider.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemoryProvider.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemoryProvider.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,142 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.util.Map;
+
+import org.apache.opencmis.commons.provider.AclService;
+import org.apache.opencmis.commons.provider.DiscoveryService;
+import org.apache.opencmis.commons.provider.MultiFilingService;
+import org.apache.opencmis.commons.provider.NavigationService;
+import org.apache.opencmis.commons.provider.ObjectService;
+import org.apache.opencmis.commons.provider.PolicyService;
+import org.apache.opencmis.commons.provider.RelationshipService;
+import org.apache.opencmis.commons.provider.RepositoryInfoData;
+import org.apache.opencmis.commons.provider.RepositoryService;
+import org.apache.opencmis.commons.provider.VersioningService;
+import org.apache.opencmis.inmemory.ConfigConstants;
+import org.apache.opencmis.inmemory.server.InMemoryDiscoveryServiceImpl;
+import org.apache.opencmis.inmemory.server.InMemoryMultiFilingServiceImpl;
+import org.apache.opencmis.inmemory.server.InMemoryNavigationServiceImpl;
+import org.apache.opencmis.inmemory.server.InMemoryObjectServiceImpl;
+import org.apache.opencmis.inmemory.server.InMemoryRepositoryServiceImpl;
+import org.apache.opencmis.inmemory.server.InMemoryVersioningServiceImpl;
+import org.apache.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.opencmis.inmemory.storedobj.impl.StoreManagerFactory;
+import org.apache.opencmis.inmemory.storedobj.impl.StoreManagerImpl;
+
+/**
+ * General class to manage all the services. Directly used for unit test of the
+ * in-memory server, indirectly used for the client provider implementation of
+ * the in-memory provider
+ *
+ * @author Jens
+ *
+ */
+public class CmisInMemoryProvider {
+
+ protected StoreManager fStoreManager;
+ protected RepositoryService fRepositoryService;
+ protected NavigationService fNavigationService;
+ protected ObjectService fObjectService;
+ protected VersioningService fVersioningService;
+ protected MultiFilingService fMultiService;
+ protected RepositoryInfoData fRepositoryInfo;
+ protected DiscoveryService fDiscoveryService;
+
+ public CmisInMemoryProvider(Map<String, String> cfgParams) {
+ setup (cfgParams);
+ }
+
+ protected CmisInMemoryProvider() {
+ }
+
+ public RepositoryService getRepositoryService() {
+ return fRepositoryService;
+ }
+
+ public NavigationService getNavigationService() {
+ return fNavigationService;
+ }
+
+ public ObjectService getObjectService() {
+ return fObjectService;
+ }
+
+ public VersioningService getVersioningService() {
+ return fVersioningService;
+ }
+
+ public RelationshipService getRelationshipService() {
+ return null;
+ }
+
+ public DiscoveryService getDiscoveryService() {
+ return fDiscoveryService;
+ }
+
+ public MultiFilingService getMultiFilingService() {
+ return fMultiService;
+ }
+
+ public AclService getAclService() {
+ return null;
+ }
+
+ public PolicyService getPolicyService() {
+ return null;
+ }
+
+ protected void setup(Map<String, String> cfgParams) {
+ String repositoryClassName = (String) cfgParams.get(ConfigConstants.REPOSITORY_CLASS);
+ if (null==repositoryClassName)
+ repositoryClassName = StoreManagerImpl.class.getName();
+
+ fStoreManager = StoreManagerFactory.createInstance(repositoryClassName);
+ String repositoryId = (String) cfgParams.get(ConfigConstants.REPOSITORY_ID);
+
+ // first create repository
+ if (null != repositoryId ) {
+ // then create/initialize type system
+ String typeCreatorClassName = (String) cfgParams.get(ConfigConstants.TYPE_CREATOR_CLASS);
+ fStoreManager.createAndInitRepository(repositoryId, typeCreatorClassName);
+ } else {
+ // then init repository (note: loads root folder which requires cmis:folder type available)
+ fStoreManager.initRepository(null);
+ }
+
+ InMemoryRepositoryServiceImpl repSvc = new InMemoryRepositoryServiceImpl(fStoreManager);
+ InMemoryNavigationServiceImpl navSvc = new InMemoryNavigationServiceImpl(fStoreManager);
+ InMemoryObjectServiceImpl objSvc = new InMemoryObjectServiceImpl(fStoreManager);
+ InMemoryVersioningServiceImpl verSvc = new InMemoryVersioningServiceImpl(fStoreManager, objSvc);
+ InMemoryDiscoveryServiceImpl disSvc = new InMemoryDiscoveryServiceImpl(fStoreManager, repSvc,
+ navSvc);
+ InMemoryMultiFilingServiceImpl multiSvc = new InMemoryMultiFilingServiceImpl(fStoreManager);
+
+ // initialize services
+ fRepositoryService = new RepositoryServiceImpl(repSvc);
+ fNavigationService = new NavigationServiceImpl(navSvc);
+ fObjectService = new ObjectServiceImpl(objSvc);
+ fVersioningService = new VersioningServiceImpl(verSvc);
+ fMultiService = new MultiFilingServiceImpl(multiSvc);
+ fDiscoveryService = new DiscoveryServiceImpl(disSvc);
+ }
+
+
+}
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemorySpi.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemorySpi.java?rev=917600&r1=917599&r2=917600&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemorySpi.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/CmisInMemorySpi.java Mon Mar 1 17:20:16 2010
@@ -33,14 +33,8 @@
import org.apache.opencmis.commons.provider.RepositoryInfoData;
import org.apache.opencmis.commons.provider.RepositoryService;
import org.apache.opencmis.commons.provider.VersioningService;
-import org.apache.opencmis.inmemory.CmisInMemoryProvider;
import org.apache.opencmis.inmemory.ConfigConstants;
-import org.apache.opencmis.inmemory.NavigationServiceImpl;
-import org.apache.opencmis.inmemory.ObjectServiceImpl;
-import org.apache.opencmis.inmemory.RepositoryServiceImpl;
-import org.apache.opencmis.inmemory.VersioningServiceImpl;
import org.apache.opencmis.inmemory.storedobj.api.StoreManager;
-import org.apache.opencmis.inmemory.storedobj.impl.StoreManagerFactory;
import org.apache.opencmis.inmemory.storedobj.impl.StoreManagerImpl;
/**
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DiscoveryServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DiscoveryServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DiscoveryServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,55 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.math.BigInteger;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.provider.DiscoveryService;
+import org.apache.opencmis.commons.provider.Holder;
+import org.apache.opencmis.commons.provider.ObjectList;
+import org.apache.opencmis.inmemory.server.InMemoryDiscoveryServiceImpl;
+
+public class DiscoveryServiceImpl extends AbstractService implements DiscoveryService {
+
+ private InMemoryDiscoveryServiceImpl fDiscoverySvc;
+
+ public DiscoveryServiceImpl(InMemoryDiscoveryServiceImpl disSvc) {
+ fDiscoverySvc = disSvc;
+ }
+
+ public ObjectList getContentChanges(String repositoryId, Holder<String> changeLogToken,
+ Boolean includeProperties, String filter, Boolean includePolicyIds, Boolean includeAcl,
+ BigInteger maxItems, ExtensionsData extension) {
+
+ return fDiscoverySvc.getContentChanges(fDummyCallContext, repositoryId, changeLogToken,
+ includeProperties, filter, includePolicyIds, includeAcl, maxItems, extension, null);
+ }
+
+ public ObjectList query(String repositoryId, String statement, Boolean searchAllVersions,
+ Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+
+ return fDiscoverySvc.query(fDummyCallContext, repositoryId, statement, searchAllVersions,
+ includeAllowableActions, includeRelationships, renditionFilter, maxItems, skipCount,
+ extension);
+ }
+
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DummyCallContext.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DummyCallContext.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DummyCallContext.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/DummyCallContext.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,40 @@
+package org.apache.opencmis.inmemory.clientprovider;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.opencmis.server.spi.CallContext;
+
+public class DummyCallContext implements CallContext {
+ private Map<String, String> fParameter = new HashMap<String, String>();
+
+ public DummyCallContext() {
+ fParameter.put( USERNAME, "TestUser");
+ fParameter.put( PASSWORD, "secret");
+ fParameter.put( LOCALE, "en");
+ }
+
+ public String get(String key) {
+ return fParameter.get(key);
+ }
+
+ public String getBinding() {
+ return BINDING_ATOMPUB;
+ }
+
+ public String getLocale() {
+ return get(LOCALE);
+ }
+
+ public String getPassword() {
+ return get(PASSWORD);
+ }
+
+ public String getUsername() {
+ return get(USERNAME);
+ }
+
+ public void put(String key, String value) {
+ fParameter.put(key, value);
+ }
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/MultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/MultiFilingServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/MultiFilingServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/MultiFilingServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,44 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.provider.MultiFilingService;
+import org.apache.opencmis.inmemory.server.InMemoryMultiFilingServiceImpl;
+
+public class MultiFilingServiceImpl extends AbstractService implements MultiFilingService {
+
+ private InMemoryMultiFilingServiceImpl fMultiSvc;
+
+ public MultiFilingServiceImpl(InMemoryMultiFilingServiceImpl multiSvc) {
+ fMultiSvc = multiSvc;
+ }
+
+ public void addObjectToFolder(String repositoryId, String objectId, String folderId,
+ Boolean allVersions, ExtensionsData extension) {
+
+ fMultiSvc.addObjectToFolder(fDummyCallContext, repositoryId, objectId, folderId, allVersions, extension, null);
+ }
+
+ public void removeObjectFromFolder(String repositoryId, String objectId, String folderId,
+ ExtensionsData extension) {
+
+ fMultiSvc.removeObjectFromFolder(fDummyCallContext, repositoryId, objectId, folderId, extension, null);
+ }
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/NavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/NavigationServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/NavigationServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/NavigationServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,101 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.provider.NavigationService;
+import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.commons.provider.ObjectInFolderContainer;
+import org.apache.opencmis.commons.provider.ObjectInFolderList;
+import org.apache.opencmis.commons.provider.ObjectList;
+import org.apache.opencmis.commons.provider.ObjectParentData;
+import org.apache.opencmis.inmemory.server.InMemoryNavigationServiceImpl;
+
+/**
+ * Navigation Service interface. See CMIS 1.0 domain model for details.
+ *
+ * @author Jens
+ */
+
+public class NavigationServiceImpl extends AbstractService implements NavigationService {
+ private InMemoryNavigationServiceImpl fNavSvc;
+
+ public NavigationServiceImpl(InMemoryNavigationServiceImpl navSvc) {
+ fNavSvc = navSvc;
+ }
+
+ public ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter,
+ String orderBy, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+
+ return fNavSvc.getCheckedOutDocs(fDummyCallContext, repositoryId, folderId, filter, orderBy,
+ includeAllowableActions, includeRelationships, renditionFilter, maxItems, skipCount,
+ extension, null);
+ }
+
+ public ObjectInFolderList getChildren(String repositoryId, String folderId, String filter,
+ String orderBy, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, Boolean includePathSegment, BigInteger maxItems,
+ BigInteger skipCount, ExtensionsData extension) {
+
+ return fNavSvc.getChildren(fDummyCallContext, repositoryId, folderId, filter, orderBy,
+ includeAllowableActions, includeRelationships, renditionFilter, includePathSegment,
+ maxItems, skipCount, extension, null);
+ }
+
+ public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId,
+ BigInteger depth, String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePathSegment, ExtensionsData extension) {
+
+ return fNavSvc.getDescendants(fDummyCallContext, repositoryId, folderId, depth, filter,
+ includeAllowableActions, includeRelationships, renditionFilter, includePathSegment,
+ extension, null);
+ }
+
+ public ObjectData getFolderParent(String repositoryId, String folderId, String filter,
+ ExtensionsData extension) {
+
+ return fNavSvc.getFolderParent(fDummyCallContext, repositoryId, folderId, filter, extension,
+ null);
+ }
+
+ public List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId,
+ BigInteger depth, String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter,
+ Boolean includePathSegment, ExtensionsData extension) {
+
+ return fNavSvc.getDescendants(fDummyCallContext, repositoryId, folderId, depth, filter,
+ includeAllowableActions, includeRelationships, renditionFilter, includePathSegment,
+ extension, null);
+ }
+
+ public List<ObjectParentData> getObjectParents(String repositoryId, String objectId,
+ String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, Boolean includeRelativePathSegment, ExtensionsData extension) {
+
+ return fNavSvc.getObjectParents(fDummyCallContext, repositoryId, objectId, filter,
+ includeAllowableActions, includeRelationships, renditionFilter, includeRelativePathSegment,
+ extension, null);
+ }
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/ObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/ObjectServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/ObjectServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/ObjectServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,158 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.enums.UnfileObjects;
+import org.apache.opencmis.commons.enums.VersioningState;
+import org.apache.opencmis.commons.provider.AccessControlList;
+import org.apache.opencmis.commons.provider.AllowableActionsData;
+import org.apache.opencmis.commons.provider.ContentStreamData;
+import org.apache.opencmis.commons.provider.FailedToDeleteData;
+import org.apache.opencmis.commons.provider.Holder;
+import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.commons.provider.ObjectService;
+import org.apache.opencmis.commons.provider.PropertiesData;
+import org.apache.opencmis.commons.provider.RenditionData;
+import org.apache.opencmis.inmemory.server.InMemoryObjectServiceImpl;
+
+public class ObjectServiceImpl extends AbstractService implements ObjectService {
+
+ private InMemoryObjectServiceImpl fObjSvc;
+
+ public ObjectServiceImpl(InMemoryObjectServiceImpl objSvc) {
+ fObjSvc = objSvc;
+ }
+
+ public String createDocument(String repositoryId, PropertiesData properties, String folderId,
+ ContentStreamData contentStream, VersioningState versioningState, List<String> policies,
+ AccessControlList addAces, AccessControlList removeAces, ExtensionsData extension) {
+
+ return fObjSvc.createDocument(fDummyCallContext, repositoryId, properties, folderId, contentStream, versioningState, policies, addAces, removeAces, extension);
+ }
+
+ public String createDocumentFromSource(String repositoryId, String sourceId,
+ PropertiesData properties, String folderId, VersioningState versioningState,
+ List<String> policies, AccessControlList addAces, AccessControlList removeAces,
+ ExtensionsData extension) {
+
+ return fObjSvc.createDocumentFromSource(fDummyCallContext, repositoryId, sourceId, properties, folderId, versioningState, policies, addAces, removeAces, extension);
+ }
+
+ public String createFolder(String repositoryId, PropertiesData properties, String folderId,
+ List<String> policies, AccessControlList addAces, AccessControlList removeAces,
+ ExtensionsData extension) {
+
+ return fObjSvc.createFolder(fDummyCallContext, repositoryId, properties, folderId, policies, addAces, removeAces, extension);
+ }
+
+ public String createPolicy(String repositoryId, PropertiesData properties, String folderId,
+ List<String> policies, AccessControlList addAces, AccessControlList removeAces,
+ ExtensionsData extension) {
+
+ return fObjSvc.createPolicy(fDummyCallContext, repositoryId, properties, folderId, policies, addAces, removeAces, extension);
+ }
+
+ public String createRelationship(String repositoryId, PropertiesData properties,
+ List<String> policies, AccessControlList addAces, AccessControlList removeAces,
+ ExtensionsData extension) {
+
+ return fObjSvc.createRelationship(fDummyCallContext, repositoryId, properties, policies, addAces, removeAces, extension);
+ }
+
+ public void deleteContentStream(String repositoryId, Holder<String> objectId,
+ Holder<String> changeToken, ExtensionsData extension) {
+
+ fObjSvc.deleteContentStream(fDummyCallContext, repositoryId, objectId, changeToken, extension);
+ }
+
+ public void deleteObject(String repositoryId, String objectId, Boolean allVersions,
+ ExtensionsData extension) {
+
+ fObjSvc.deleteObjectOrCancelCheckOut(fDummyCallContext, repositoryId, objectId, allVersions, extension);
+ }
+
+ public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
+ UnfileObjects unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
+
+ return fObjSvc.deleteTree(fDummyCallContext, repositoryId, folderId, allVersions, unfileObjects, continueOnFailure, extension);
+ }
+
+ public AllowableActionsData getAllowableActions(String repositoryId, String objectId,
+ ExtensionsData extension) {
+
+ return fObjSvc.getAllowableActions(fDummyCallContext, repositoryId, objectId, extension);
+ }
+
+ public ContentStreamData getContentStream(String repositoryId, String objectId, String streamId,
+ BigInteger offset, BigInteger length, ExtensionsData extension) {
+
+ return fObjSvc.getContentStream(fDummyCallContext, repositoryId, objectId, streamId, offset, length, extension);
+ }
+
+ public ObjectData getObject(String repositoryId, String objectId, String filter,
+ Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension) {
+
+ return fObjSvc.getObject(fDummyCallContext, repositoryId, objectId, filter, includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension, null);
+ }
+
+ public ObjectData getObjectByPath(String repositoryId, String path, String filter,
+ Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+ String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension) {
+
+ return fObjSvc.getObjectByPath(fDummyCallContext, repositoryId, path, filter, includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl, extension, null);
+ }
+
+ public PropertiesData getProperties(String repositoryId, String objectId, String filter,
+ ExtensionsData extension) {
+
+ return fObjSvc.getProperties(fDummyCallContext, repositoryId, objectId, filter, extension);
+ }
+
+ public List<RenditionData> getRenditions(String repositoryId, String objectId,
+ String renditionFilter, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+
+ return fObjSvc.getRenditions(fDummyCallContext, repositoryId, objectId, renditionFilter, maxItems, skipCount, extension);
+ }
+
+ public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId,
+ String sourceFolderId, ExtensionsData extension) {
+
+ fObjSvc.moveObject(fDummyCallContext, repositoryId, objectId, targetFolderId, sourceFolderId, extension, null);
+ }
+
+ public void setContentStream(String repositoryId, Holder<String> objectId, Boolean overwriteFlag,
+ Holder<String> changeToken, ContentStreamData contentStream, ExtensionsData extension) {
+
+ fObjSvc.setContentStream(fDummyCallContext, repositoryId, objectId, overwriteFlag, changeToken, contentStream, extension);
+ }
+
+ public void updateProperties(String repositoryId, Holder<String> objectId,
+ Holder<String> changeToken, PropertiesData properties, ExtensionsData extension) {
+
+ fObjSvc.updateProperties(fDummyCallContext, repositoryId, objectId, changeToken, properties, null, extension, null);
+ }
+
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/RepositoryServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/RepositoryServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/RepositoryServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,109 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.api.TypeDefinition;
+import org.apache.opencmis.commons.api.TypeDefinitionContainer;
+import org.apache.opencmis.commons.api.TypeDefinitionList;
+import org.apache.opencmis.commons.provider.RepositoryInfoData;
+import org.apache.opencmis.commons.provider.RepositoryService;
+import org.apache.opencmis.inmemory.server.InMemoryRepositoryServiceImpl;
+
+/**
+ * InMemory Repository Service.
+ *
+ * @author <a href="mailto:fmueller@opentext.com">Florian Müller</a>
+ *
+ */
+public class RepositoryServiceImpl extends AbstractService implements RepositoryService {
+
+ private InMemoryRepositoryServiceImpl fRepSvc;
+ /**
+ * Constructor.
+ */
+ public RepositoryServiceImpl(InMemoryRepositoryServiceImpl repSvc) {
+ fRepSvc = repSvc;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.provider.RepositoryService#getRepositoryInfo(java.lang.String,
+ * org.apache.opencmis.client.provider.ExtensionsData)
+ */
+ public RepositoryInfoData getRepositoryInfo(String repositoryId, ExtensionsData extension) {
+
+ return fRepSvc.getRepositoryInfo(fDummyCallContext, repositoryId, extension);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.provider.RepositoryService#getRepositoryInfos(boolean,
+ * org.apache.opencmis.client.provider.ExtensionsData)
+ */
+ public List<RepositoryInfoData> getRepositoryInfos(ExtensionsData extension) {
+ return fRepSvc.getRepositoryInfos(fDummyCallContext, extension);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.provider.RepositoryService#getTypeChildren(java.lang.String,
+ * java.lang.String, java.lang.Boolean, java.math.BigInteger, java.math.BigInteger,
+ * org.apache.opencmis.client.provider.ExtensionsData)
+ */
+ public TypeDefinitionList getTypeChildren(String repositoryId, String typeId,
+ Boolean includePropertyDefinitions, BigInteger maxItems, BigInteger skipCount,
+ ExtensionsData extension) {
+
+ return fRepSvc.getTypeChildren(fDummyCallContext, repositoryId, typeId, includePropertyDefinitions, maxItems, skipCount, extension);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.provider.RepositoryService#getTypeDefinition(java.lang.String,
+ * java.lang.String, org.apache.opencmis.client.provider.ExtensionsData)
+ */
+ public TypeDefinition getTypeDefinition(String repositoryId, String typeId,
+ ExtensionsData extension) {
+
+ return fRepSvc.getTypeDefinition(fDummyCallContext, repositoryId, typeId, extension);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.opencmis.client.provider.RepositoryService#getTypeDescendants(java.lang.String,
+ * java.lang.String, java.math.BigInteger, java.lang.Boolean,
+ * org.apache.opencmis.client.provider.ExtensionsData)
+ */
+ public List<TypeDefinitionContainer> getTypeDescendants(String repositoryId, String typeId,
+ BigInteger depth, Boolean includePropertyDefinitions, ExtensionsData extension) {
+
+ return fRepSvc.getTypeDescendants(fDummyCallContext, repositoryId, typeId, depth, includePropertyDefinitions, extension);
+ }
+
+
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/clientprovider/VersioningServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,86 @@
+/*
+ * 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.opencmis.inmemory.clientprovider;
+
+import java.util.List;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.provider.AccessControlList;
+import org.apache.opencmis.commons.provider.ContentStreamData;
+import org.apache.opencmis.commons.provider.Holder;
+import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.commons.provider.PropertiesData;
+import org.apache.opencmis.commons.provider.VersioningService;
+import org.apache.opencmis.inmemory.server.InMemoryVersioningServiceImpl;
+
+public class VersioningServiceImpl extends AbstractService implements VersioningService {
+
+ private InMemoryVersioningServiceImpl fVersioningSvc;
+
+ public VersioningServiceImpl(InMemoryVersioningServiceImpl verSvc) {
+ fVersioningSvc = verSvc;
+ }
+
+ public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
+
+ fVersioningSvc.cancelCheckOut(fDummyCallContext, repositoryId, objectId, extension);
+ }
+
+ public void checkIn(String repositoryId, Holder<String> objectId, Boolean major,
+ PropertiesData properties, ContentStreamData contentStream, String checkinComment,
+ List<String> policies, AccessControlList addAces, AccessControlList removeAces,
+ ExtensionsData extension) {
+
+ fVersioningSvc.checkIn(fDummyCallContext, repositoryId, objectId, major, properties,
+ contentStream, checkinComment, policies, addAces, removeAces, extension, null);
+ }
+
+ public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
+ Holder<Boolean> contentCopied) {
+
+ fVersioningSvc.checkOut(fDummyCallContext, repositoryId, objectId, extension, contentCopied,
+ null);
+ }
+
+ public List<ObjectData> getAllVersions(String repositoryId, String versionSeriesId,
+ String filter, Boolean includeAllowableActions, ExtensionsData extension) {
+
+ return fVersioningSvc.getAllVersions(fDummyCallContext, repositoryId, versionSeriesId, filter,
+ includeAllowableActions, extension, null);
+ }
+
+ public ObjectData getObjectOfLatestVersion(String repositoryId, String versionSeriesId,
+ Boolean major, String filter, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
+ Boolean includeAcl, ExtensionsData extension) {
+
+ return fVersioningSvc.getObjectOfLatestVersion(fDummyCallContext, repositoryId,
+ versionSeriesId, major, filter, includeAllowableActions, includeRelationships,
+ renditionFilter, includePolicyIds, includeAcl, extension, null);
+ }
+
+ public PropertiesData getPropertiesOfLatestVersion(String repositoryId, String versionSeriesId,
+ Boolean major, String filter, ExtensionsData extension) {
+
+ return fVersioningSvc.getPropertiesOfLatestVersion(fDummyCallContext, repositoryId,
+ versionSeriesId, major, filter, extension);
+ }
+
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AbstractServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AbstractServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AbstractServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AbstractServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,171 @@
+/*
+ * 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.opencmis.inmemory.server;
+
+import org.apache.opencmis.commons.PropertyIds;
+import org.apache.opencmis.commons.api.TypeDefinition;
+import org.apache.opencmis.commons.api.TypeDefinitionContainer;
+import org.apache.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.apache.opencmis.commons.exceptions.CmisUpdateConflictException;
+import org.apache.opencmis.commons.provider.PropertiesData;
+import org.apache.opencmis.inmemory.storedobj.api.DocumentVersion;
+import org.apache.opencmis.inmemory.storedobj.api.ObjectStore;
+import org.apache.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.opencmis.inmemory.storedobj.api.StoredObject;
+import org.apache.opencmis.inmemory.storedobj.api.VersionedDocument;
+
+/**
+ * Common functionality for all service implementations
+ *
+ * @author Jens
+ *
+ */
+public class AbstractServiceImpl {
+
+ protected StoreManager fStoreManager;
+
+ protected AbstractServiceImpl(StoreManager storeManager) {
+ fStoreManager = storeManager;
+ }
+
+ /**
+ * check if repository is known and that object exists. To avoid later calls
+ * to again retrieve the object from the id return the retrieved object for
+ * later use.
+ *
+ * @param repositoryId
+ * repository id
+ * @param objectId
+ * object id
+ * @return
+ * object for objectId
+ */
+ protected StoredObject checkStandardParameters(String repositoryId, String objectId) {
+
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
+ if (objStore==null)
+ throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
+
+ StoredObject so = objStore.getObjectById(objectId);
+
+ if (so==null)
+ throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+ return so;
+ }
+
+ protected StoredObject checkExistingObjectId(ObjectStore objStore, String objectId) {
+
+ StoredObject so = objStore.getObjectById(objectId);
+
+ if (so==null)
+ throw new CmisObjectNotFoundException("Unknown object id: " + objectId);
+
+ return so;
+ }
+
+ protected void checkRepositoryId(String repositoryId) {
+ ObjectStore objStore = fStoreManager.getObjectStore(repositoryId);
+
+ if (objStore==null)
+ throw new CmisObjectNotFoundException("Unknown repository id: " + repositoryId);
+ }
+
+ protected TypeDefinition getTypeDefinition(String repositoryId, PropertiesData properties) {
+ String typeId = (String) properties.getProperties().get(PropertyIds.CMIS_OBJECT_TYPE_ID)
+ .getFirstValue();
+ TypeDefinitionContainer typeDefC = fStoreManager.getTypeById(repositoryId, typeId);
+ if (typeDefC == null)
+ throw new RuntimeException("Cannot create object, a type with id " + typeId + " is unknown");
+
+ return typeDefC.getTypeDefinition();
+ }
+
+ protected TypeDefinition getTypeDefinition(String repositoryId, StoredObject obj) {
+
+ TypeDefinitionContainer typeDefC = fStoreManager.getTypeById(repositoryId, obj.getTypeId());
+ return typeDefC.getTypeDefinition();
+ }
+
+ /**
+ * We allow checkin, cancel, checkout operations on a single version as well as on a version series
+ * This method returns the versioned document (version series) in each case
+ * @param value
+ * version or version series id of a document
+ * @return
+ * version series id
+ */
+ protected VersionedDocument getVersionedDocumentOfObjectId(StoredObject so) {
+
+ VersionedDocument verDoc;
+ if (so instanceof DocumentVersion) {
+ // get document the version is contained in to c
+ verDoc = ((DocumentVersion) so).getParentDocument();
+ } else {
+ verDoc = (VersionedDocument) so;
+ }
+
+ return verDoc;
+ }
+
+ protected VersionedDocument testIsNotCheckedOutBySomeoneElse(StoredObject so, String user) {
+ checkIsVersionableObject(so);
+ VersionedDocument verDoc = getVersionedDocumentOfObjectId(so);
+ if (verDoc.isCheckedOut())
+ testCheckedOutByCurrentUser(user, verDoc);
+
+ return verDoc;
+ }
+
+ protected VersionedDocument testHasProperCheckedOutStatus(StoredObject so, String user) {
+
+ checkIsVersionableObject(so);
+ VersionedDocument verDoc = getVersionedDocumentOfObjectId(so);
+
+ checkHasUser(user);
+
+ testIsCheckedOut(verDoc);
+ testCheckedOutByCurrentUser(user, verDoc);
+
+ return verDoc;
+ }
+
+ protected void checkIsVersionableObject(StoredObject so) {
+ if (! (so instanceof VersionedDocument || so instanceof DocumentVersion))
+ throw new RuntimeException("Object is of a versionable type but not instance of VersionedDocument or DocumentVersion.");
+ }
+
+ protected void checkHasUser(String user) {
+ if (null == user || user.length() == 0)
+ throw new CmisUpdateConflictException("Object can't be checked-in, no user is given.");
+ }
+
+ protected void testCheckedOutByCurrentUser(String user, VersionedDocument verDoc) {
+ if (! user.equals(verDoc.getCheckedOutBy()))
+ throw new CmisUpdateConflictException("Object can't be checked-in, user "
+ + verDoc.getCheckedOutBy() + " has checked out the document.");
+ }
+
+ protected void testIsCheckedOut(VersionedDocument verDoc) {
+ if (!verDoc.isCheckedOut())
+ throw new CmisUpdateConflictException("Canot check-in: Document " + verDoc.getId() + " is not checked out.");
+ }
+
+}
Modified: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java?rev=917600&r1=917599&r2=917600&view=diff
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java (original)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/AtomLinkInfoProvider.java Mon Mar 1 17:20:16 2010
@@ -64,18 +64,14 @@
* @param objectInfos
* Holder to fill with information
*/
- public void fillInformationForAtomLinks(String repositoryId, String objectId, ObjectInfoHolder objectInfos) {
- if (null == objectInfos || null == objectId)
+ public void fillInformationForAtomLinks(String repositoryId, StoredObject so, ObjectInfoHolder objectInfos) {
+ if (null == objectInfos || null == so)
return;
-
- ObjectInfoImpl objInfo = new ObjectInfoImpl();
- ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
- StoredObject so = objectStore.getObjectById(objectId);
-
TypeDefinition typeDef = fStoreManager.getTypeById(repositoryId, so.getTypeId()).getTypeDefinition();
- // Fill all setters:
- objInfo.setId(objectId);
+ ObjectInfoImpl objInfo = new ObjectInfoImpl();
+ // Fill all setters:
+ objInfo.setId(so.getId());
objInfo.setName(so.getName());
objInfo.setCreatedBy(so.getCreatedBy()); //!
objInfo.setCreationDate(so.getCreatedAt()); //!
@@ -143,6 +139,25 @@
objectInfos.addObjectInfo(objInfo);
}
+
+ /**
+ * FillObjectInfoHolder object with required information needed for Atom binding for a single object
+ *
+ * @param repositoryId
+ * id of repository
+ * @param objectId
+ * object to retrieve information for
+ * @param objectInfos
+ * Holder to fill with information
+ */
+ public void fillInformationForAtomLinks(String repositoryId, String objectId, ObjectInfoHolder objectInfos) {
+ if (null == objectInfos || null == objectId)
+ return;
+
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
+ StoredObject so = objectStore.getObjectById(objectId);
+ fillInformationForAtomLinks(repositoryId, so, objectInfos);
+ }
/**
* FillObjectInfoHolder object with required information needed for Atom binding
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryDiscoveryServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,131 @@
+/*
+ * 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.opencmis.inmemory.server;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.enums.TypeOfChanges;
+import org.apache.opencmis.commons.impl.dataobjects.ChangeEventInfoDataImpl;
+import org.apache.opencmis.commons.impl.dataobjects.ObjectDataImpl;
+import org.apache.opencmis.commons.impl.dataobjects.ObjectListImpl;
+import org.apache.opencmis.commons.provider.Holder;
+import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.commons.provider.ObjectInFolderContainer;
+import org.apache.opencmis.commons.provider.ObjectList;
+import org.apache.opencmis.commons.provider.RepositoryInfoData;
+import org.apache.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.opencmis.server.spi.CallContext;
+import org.apache.opencmis.server.spi.CmisDiscoveryService;
+import org.apache.opencmis.server.spi.ObjectInfoHolder;
+
+public class InMemoryDiscoveryServiceImpl implements CmisDiscoveryService {
+
+ private StoreManager fStoreManager;
+ AtomLinkInfoProvider fAtomLinkProvider;
+ InMemoryNavigationServiceImpl fNavigationService; // real implementation of the service
+ InMemoryRepositoryServiceImpl fRepositoryService;
+
+ public InMemoryDiscoveryServiceImpl(StoreManager storeManager, InMemoryRepositoryServiceImpl repSvc,
+ InMemoryNavigationServiceImpl navSvc) {
+ fStoreManager = storeManager;
+ fAtomLinkProvider = new AtomLinkInfoProvider(fStoreManager);
+ fNavigationService = navSvc;
+ fRepositoryService = repSvc;
+ }
+
+ public ObjectList getContentChanges(CallContext context, String repositoryId,
+ Holder<String> changeLogToken, Boolean includeProperties, String filter,
+ Boolean includePolicyIds, Boolean includeAcl, BigInteger maxItems, ExtensionsData extension,
+ ObjectInfoHolder objectInfos) {
+ // dummy implementation using hard coded values
+
+ // Attach the CallContext to a thread local context that can be accessed from everywhere
+ RuntimeContext.getRuntimeConfig().attachCfg(context);
+
+ RepositoryInfoData rep = fRepositoryService.getRepositoryInfo(context, repositoryId, null);
+ String rootFolderId = rep.getRootFolderId();
+
+ ObjectListImpl objList = new ObjectListImpl();
+ List<ObjectInFolderContainer> tempRes = fNavigationService.getDescendants(context,
+ repositoryId, rootFolderId, BigInteger.valueOf(3), filter, false,
+ IncludeRelationships.NONE, null, false, extension, null);
+
+ // convert ObjectInFolderContainerList to objectList
+ List<ObjectData> lod = new ArrayList<ObjectData>();
+ for (ObjectInFolderContainer obj : tempRes) {
+ convertList(lod, obj);
+ }
+ objList.setObjects(lod);
+ objList.setNumItems(BigInteger.valueOf(lod.size()));
+
+ // To be able to provide all Atom links in the response we need additional information:
+ fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, null, objectInfos, objList);
+ return objList;
+ }
+
+ private void convertList(List<ObjectData> lod, ObjectInFolderContainer obj) {
+ lod.add(obj.getObject().getObject());
+ // add dummy event info
+ ObjectData oif = obj.getObject().getObject();
+ ObjectDataImpl oifImpl = (ObjectDataImpl) oif;
+ ChangeEventInfoDataImpl changeEventInfo = new ChangeEventInfoDataImpl();
+ changeEventInfo.setTypeOfChanges(TypeOfChanges.UPDATED);
+ changeEventInfo.setChangeTime(new GregorianCalendar());
+ oifImpl.setChangeEventInfo(changeEventInfo);
+ if (null != obj.getChildren()) {
+ for (ObjectInFolderContainer oifc : obj.getChildren()) {
+ convertList(lod, oifc);
+ }
+ }
+ }
+
+ public ObjectList query(CallContext context, String repositoryId, String statement,
+ Boolean searchAllVersions, Boolean includeAllowableActions,
+ IncludeRelationships includeRelationships, String renditionFilter, BigInteger maxItems,
+ BigInteger skipCount, ExtensionsData extension) {
+ // dummy implementation using hard coded values
+
+ // Attach the CallContext to a thread local context that can be accessed from everywhere
+ RuntimeContext.getRuntimeConfig().attachCfg(context);
+
+ // use descendants of root folder as result
+ RepositoryInfoData rep = fRepositoryService.getRepositoryInfo(context, repositoryId, null);
+ String rootFolderId = rep.getRootFolderId();
+ ObjectListImpl objList = new ObjectListImpl();
+ List<ObjectInFolderContainer> tempRes = fNavigationService.getDescendants(context,
+ repositoryId, rootFolderId, BigInteger.valueOf(3), "*", includeAllowableActions,
+ includeRelationships, renditionFilter, false, extension, null);
+
+ // convert ObjectInFolderContainerList to objectList
+ List<ObjectData> lod = new ArrayList<ObjectData>();
+ for (ObjectInFolderContainer obj : tempRes) {
+ convertList(lod, obj);
+ }
+ objList.setObjects(lod);
+ objList.setNumItems(BigInteger.valueOf(lod.size()));
+
+ return objList;
+ }
+
+}
Added: incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java?rev=917600&view=auto
==============================================================================
--- incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java (added)
+++ incubator/chemistry/trunk/opencmis/opencmis-server/opencmis-server-inmemory/src/main/java/org/apache/opencmis/inmemory/server/InMemoryMultiFilingServiceImpl.java Mon Mar 1 17:20:16 2010
@@ -0,0 +1,130 @@
+/*
+ * 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.opencmis.inmemory.server;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.opencmis.commons.api.ExtensionsData;
+import org.apache.opencmis.commons.enums.IncludeRelationships;
+import org.apache.opencmis.commons.exceptions.CmisConstraintException;
+import org.apache.opencmis.commons.exceptions.CmisNotSupportedException;
+import org.apache.opencmis.commons.provider.ObjectData;
+import org.apache.opencmis.inmemory.storedobj.api.Folder;
+import org.apache.opencmis.inmemory.storedobj.api.MultiFiling;
+import org.apache.opencmis.inmemory.storedobj.api.ObjectStore;
+import org.apache.opencmis.inmemory.storedobj.api.StoreManager;
+import org.apache.opencmis.inmemory.storedobj.api.StoredObject;
+import org.apache.opencmis.inmemory.types.PropertyCreationHelper;
+import org.apache.opencmis.server.spi.CallContext;
+import org.apache.opencmis.server.spi.CmisMultiFilingService;
+import org.apache.opencmis.server.spi.ObjectInfoHolder;
+
+public class InMemoryMultiFilingServiceImpl extends AbstractServiceImpl implements
+ CmisMultiFilingService {
+
+ private static final Log LOG = LogFactory.getLog(InMemoryMultiFilingServiceImpl.class.getName());
+
+ AtomLinkInfoProvider fAtomLinkProvider;
+
+ public InMemoryMultiFilingServiceImpl(StoreManager storeMgr) {
+ super(storeMgr);
+ fAtomLinkProvider = new AtomLinkInfoProvider(storeMgr);
+ }
+
+ public ObjectData addObjectToFolder(CallContext context, String repositoryId, String objectId,
+ String folderId, Boolean allVersions, ExtensionsData extension, ObjectInfoHolder objectInfos) {
+
+ LOG.debug("Begin addObjectToFolder()");
+
+ // Attach the CallContext to a thread local context that can be accessed from everywhere
+ RuntimeContext.getRuntimeConfig().attachCfg(context);
+
+ StoredObject[] so2 = checkParams(repositoryId, objectId, folderId);
+ if (allVersions != null && allVersions.booleanValue() == false)
+ throw new CmisNotSupportedException(
+ "Cannot add object to folder, version specific filing is not supported.");
+ StoredObject so = so2[0];
+ StoredObject folder = so2[1];
+ checkObjects(so, folder);
+
+ Folder newParent = (Folder) folder;
+ MultiFiling obj = (MultiFiling) so;
+ obj.addParent(newParent);
+
+ fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+ fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, folder, objectInfos);
+
+ ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
+ IncludeRelationships.NONE, null, false, false, extension);
+
+ LOG.debug("End addObjectToFolder()");
+ return od;
+ }
+
+ public ObjectData removeObjectFromFolder(CallContext context, String repositoryId,
+ String objectId, String folderId, ExtensionsData extension, ObjectInfoHolder objectInfos) {
+
+ LOG.debug("Begin removeObjectFromFolder()");
+ // Attach the CallContext to a thread local context that can be accessed from everywhere
+ RuntimeContext.getRuntimeConfig().attachCfg(context);
+
+ StoredObject so = checkStandardParameters(repositoryId, objectId);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
+ StoredObject folder = checkExistingObjectId(objectStore, folderId);
+
+ checkObjects(so, folder);
+ Folder parent = (Folder) folder;
+ MultiFiling obj = (MultiFiling) so;
+ obj.removeParent(parent);
+
+ // To be able to provide all Atom links in the response we need additional information:
+ fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, so, objectInfos);
+ fAtomLinkProvider.fillInformationForAtomLinks(repositoryId, folder, objectInfos);
+
+ ObjectData od = PropertyCreationHelper.getObjectData(fStoreManager, so, null, false,
+ IncludeRelationships.NONE, null, false, false, extension);
+
+ LOG.debug("End removeObjectFromFolder()");
+
+ return od;
+ }
+
+ private StoredObject[] checkParams(String repositoryId, String objectId, String folderId) {
+ StoredObject[] so = new StoredObject[2];
+ so[0] = checkStandardParameters(repositoryId, objectId);
+ ObjectStore objectStore = fStoreManager.getObjectStore(repositoryId);
+ so[1] = checkExistingObjectId(objectStore, folderId);
+ return so;
+ }
+
+ private void checkObjects(StoredObject so, StoredObject folder) {
+ if (!(so instanceof MultiFiling))
+ throw new CmisConstraintException("Cannot add object to folder, object id " + so.getId()
+ + " is not a multi-filed object.");
+
+ if ((so instanceof Folder))
+ throw new CmisConstraintException("Cannot add object to folder, object id " + folder.getId()
+ + " is a folder and folders are not multi-filed.");
+
+ if (!(folder instanceof Folder))
+ throw new CmisConstraintException("Cannot add object to folder, folder id " + folder.getId()
+ + " does not refer to a folder.");
+ }
+
+}