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

svn commit: r935641 - in /incubator/chemistry/opencmis/trunk: chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/ chemistry-opencmis-client/chemistry-opencmis-client-bindings/sr...

Author: fmui
Date: Mon Apr 19 16:00:02 2010
New Revision: 935641

URL: http://svn.apache.org/viewvc?rev=935641&view=rev
Log:
added local binding implementation

Added:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AbstractLocalService.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AclServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/DiscoveryServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/MultiFilingServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/NavigationServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ObjectServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/PolicyServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RelationshipServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RepositoryServiceImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/VersioningServiceImpl.java
Modified:
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/SessionImpl.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/CmisSpi.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/Session.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/CmisAtomPubSpi.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/CmisLocalSpi.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java
    incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/RepositoryMap.java

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/SessionImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/SessionImpl.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/SessionImpl.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/SessionImpl.java Mon Apr 19 16:00:02 2010
@@ -19,6 +19,7 @@
 package org.apache.chemistry.opencmis.client.bindings.impl;
 
 import java.io.Serializable;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -43,6 +44,10 @@ public class SessionImpl implements Sess
 		data = new HashMap<String, Object>();
 	}
 
+	public Collection<String> getKeys() {
+		return data.keySet();
+	}
+
 	public Object get(String key) {
 		Object value = null;
 

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/CmisSpi.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/CmisSpi.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/CmisSpi.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/CmisSpi.java Mon Apr 19 16:00:02 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.chemistry.opencmis.client.bindings.spi;
 
+import java.io.Serializable;
+
 import org.apache.chemistry.opencmis.commons.api.AclService;
 import org.apache.chemistry.opencmis.commons.api.DiscoveryService;
 import org.apache.chemistry.opencmis.commons.api.MultiFilingService;
@@ -31,7 +33,7 @@ import org.apache.chemistry.opencmis.com
 /**
  * CMIS SPI interface.
  */
-public interface CmisSpi {
+public interface CmisSpi extends Serializable {
 	/**
 	 * Gets a Repository Service interface object.
 	 */

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/Session.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/Session.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/Session.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/Session.java Mon Apr 19 16:00:02 2010
@@ -19,6 +19,7 @@
 package org.apache.chemistry.opencmis.client.bindings.spi;
 
 import java.io.Serializable;
+import java.util.Collection;
 
 /**
  * CMIS provider session interface.
@@ -26,6 +27,11 @@ import java.io.Serializable;
 public interface Session extends Serializable {
 
 	/**
+	 * Returns all keys.
+	 */
+	Collection<String> getKeys();
+
+	/**
 	 * Gets a session value.
 	 */
 	Object get(String key);

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/CmisAtomPubSpi.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/CmisAtomPubSpi.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/CmisAtomPubSpi.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/CmisAtomPubSpi.java Mon Apr 19 16:00:02 2010
@@ -38,6 +38,8 @@ import org.apache.commons.logging.LogFac
  */
 public class CmisAtomPubSpi implements CmisSpiFactory, CmisSpi {
 
+	private static final long serialVersionUID = 1L;
+
 	private static Log log = LogFactory.getLog(CmisAtomPubSpi.class);
 
 	private Session session;

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AbstractLocalService.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AbstractLocalService.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AbstractLocalService.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AbstractLocalService.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,111 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.api.server.CallContext;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+
+/**
+ * Base class for all local clients.
+ */
+public abstract class AbstractLocalService {
+
+	private Session session;
+	private CmisServiceFactory factory;
+
+	private String user;
+	private String password;
+
+	/**
+	 * Sets the current session.
+	 */
+	protected void setSession(Session session) {
+		this.session = session;
+
+		Object userObj = session.get(SessionParameter.USER);
+		user = userObj instanceof String ? userObj.toString() : null;
+
+		Object passwordObj = session.get(SessionParameter.PASSWORD);
+		password = passwordObj instanceof String ? passwordObj.toString() : null;
+	}
+
+	/**
+	 * Gets the current session.
+	 */
+	protected Session getSession() {
+		return session;
+	}
+
+	/**
+	 * Sets the service factory.
+	 */
+	protected void setServiceFactory(CmisServiceFactory factory) {
+		this.factory = factory;
+	}
+
+	/**
+	 * Gets the service factory.
+	 */
+	protected CmisServiceFactory getServiceFactory() {
+		return factory;
+	}
+
+	/**
+	 * creates a local call context.
+	 */
+	protected CallContext createCallContext(String repositoryId) {
+		return new LocalCallContext(repositoryId, user, password);
+	}
+
+	protected CmisService getService(String repositoryId) {
+		return factory.getService(createCallContext(repositoryId));
+	}
+
+	// ------------------------------------------------------------------
+
+	/**
+	 * Simple {@link CallContext} implementation.
+	 */
+	class LocalCallContext implements CallContext {
+
+		private Map<String, String> contextMap = new HashMap<String, String>();
+
+		public LocalCallContext(String repositoryId, String user, String password) {
+			contextMap.put(REPOSITORY_ID, repositoryId);
+			contextMap.put(USERNAME, user);
+			contextMap.put(PASSWORD, password);
+		}
+
+		public String getBinding() {
+			return BINDING_LOCAL;
+		}
+
+		public String get(String key) {
+			return contextMap.get(key);
+		}
+
+		public String getRepositoryId() {
+			return get(REPOSITORY_ID);
+		}
+
+		public String getUsername() {
+			return get(USERNAME);
+		}
+
+		public String getPassword() {
+			return get(PASSWORD);
+		}
+
+		public String getLocale() {
+			return null;
+		}
+
+		public boolean isObjectInfoRequired() {
+			return false;
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AclServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AclServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AclServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/AclServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,41 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.Acl;
+import org.apache.chemistry.opencmis.commons.api.AclService;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.AclPropagation;
+
+public class AclServiceImpl extends AbstractLocalService implements AclService {
+
+	/**
+	 * Constructor.
+	 */
+	public AclServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public Acl applyAcl(String repositoryId, String objectId, Acl addAces, Acl removeAces,
+			AclPropagation aclPropagation, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.applyAcl(repositoryId, objectId, addAces, removeAces, aclPropagation, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public Acl getAcl(String repositoryId, String objectId, Boolean onlyBasicPermissions, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getAcl(repositoryId, objectId, onlyBasicPermissions, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/CmisLocalSpi.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/CmisLocalSpi.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/CmisLocalSpi.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/CmisLocalSpi.java Mon Apr 19 16:00:02 2010
@@ -1,5 +1,8 @@
 package org.apache.chemistry.opencmis.client.bindings.spi.local;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.chemistry.opencmis.client.bindings.spi.CmisSpi;
 import org.apache.chemistry.opencmis.client.bindings.spi.CmisSpiFactory;
 import org.apache.chemistry.opencmis.client.bindings.spi.Session;
@@ -23,10 +26,11 @@ import org.apache.commons.logging.LogFac
  */
 public class CmisLocalSpi implements CmisSpiFactory, CmisSpi {
 
+	private static final long serialVersionUID = 1L;
+
 	private static Log log = LogFactory.getLog(CmisLocalSpi.class);
 
-	private Session session;
-	private CmisServiceFactory serviceFactory;
+	private CmisServiceFactory factory;
 
 	private RepositoryService repositoryService;
 	private NavigationService navigationService;
@@ -49,19 +53,38 @@ public class CmisLocalSpi implements Cmi
 			log.debug("Initializing local SPI...");
 		}
 
-		this.session = session;
-
+		// get the service factory class name
 		String serviceFactoryClassname = (String) session.get(SessionParameter.LOCAL_FACTORY);
 		if (serviceFactoryClassname == null) {
 			throw new CmisConnectionException("Factory class not set!");
 		}
 
 		try {
-			serviceFactory = (CmisServiceFactory) Class.forName(serviceFactoryClassname).newInstance();
+			// gather parameters from session
+			Map<String, String> parameters = new HashMap<String, String>();
+			for (String key : session.getKeys()) {
+				Object value = session.get(key);
+				if (value instanceof String) {
+					parameters.put(key, (String) value);
+				}
+			}
+
+			// create and initialize factory
+			factory = (CmisServiceFactory) Class.forName(serviceFactoryClassname).newInstance();
+			factory.init(parameters);
 		} catch (Exception e) {
 			throw new CmisConnectionException("Factory cannot be created!", e);
 		}
 
+		repositoryService = new RepositoryServiceImpl(session, factory);
+		navigationService = new NavigationServiceImpl(session, factory);
+		objectService = new ObjectServiceImpl(session, factory);
+		versioningService = new VersioningServiceImpl(session, factory);
+		discoveryService = new DiscoveryServiceImpl(session, factory);
+		multiFilingService = new MultiFilingServiceImpl(session, factory);
+		relationshipService = new RelationshipServiceImpl(session, factory);
+		policyService = new PolicyServiceImpl(session, factory);
+
 		return this;
 	}
 
@@ -108,6 +131,6 @@ public class CmisLocalSpi implements Cmi
 	}
 
 	public void close() {
-		serviceFactory.destroy();
+		factory.destroy();
 	}
 }

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/DiscoveryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/DiscoveryServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/DiscoveryServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/DiscoveryServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,48 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.math.BigInteger;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.DiscoveryService;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.Holder;
+import org.apache.chemistry.opencmis.commons.api.ObjectList;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+
+public class DiscoveryServiceImpl extends AbstractLocalService implements DiscoveryService {
+
+	/**
+	 * Constructor.
+	 */
+	public DiscoveryServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public ObjectList getContentChanges(String repositoryId, Holder<String> changeLogToken, Boolean includeProperties,
+			String filter, Boolean includePolicyIds, Boolean includeAcl, BigInteger maxItems, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getContentChanges(repositoryId, changeLogToken, includeProperties, filter, includePolicyIds,
+					includeAcl, maxItems, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ObjectList query(String repositoryId, String statement, Boolean searchAllVersions,
+			Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
+			BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.query(repositoryId, statement, searchAllVersions, includeAllowableActions,
+					includeRelationships, renditionFilter, maxItems, skipCount, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/MultiFilingServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/MultiFilingServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/MultiFilingServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/MultiFilingServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,39 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.MultiFilingService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+
+public class MultiFilingServiceImpl extends AbstractLocalService implements MultiFilingService {
+
+	/**
+	 * Constructor.
+	 */
+	public MultiFilingServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public void addObjectToFolder(String repositoryId, String objectId, String folderId, Boolean allVersions,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.addObjectToFolder(repositoryId, objectId, folderId, allVersions, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void removeObjectFromFolder(String repositoryId, String objectId, String folderId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.removeObjectFromFolder(repositoryId, objectId, folderId, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/NavigationServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/NavigationServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/NavigationServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/NavigationServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,102 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.NavigationService;
+import org.apache.chemistry.opencmis.commons.api.ObjectData;
+import org.apache.chemistry.opencmis.commons.api.ObjectInFolderContainer;
+import org.apache.chemistry.opencmis.commons.api.ObjectInFolderList;
+import org.apache.chemistry.opencmis.commons.api.ObjectList;
+import org.apache.chemistry.opencmis.commons.api.ObjectParentData;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+
+public class NavigationServiceImpl extends AbstractLocalService implements NavigationService {
+
+	/**
+	 * Constructor.
+	 */
+	public NavigationServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter, String orderBy,
+			Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
+			BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getCheckedOutDocs(repositoryId, folderId, filter, orderBy, includeAllowableActions,
+					includeRelationships, renditionFilter, maxItems, skipCount, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	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) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getChildren(repositoryId, folderId, filter, orderBy, includeAllowableActions,
+					includeRelationships, renditionFilter, includePathSegment, maxItems, skipCount, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth,
+			String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+			String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getDescendants(repositoryId, folderId, depth, filter, includeAllowableActions,
+					includeRelationships, renditionFilter, includePathSegment, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getFolderParent(repositoryId, folderId, filter, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId, BigInteger depth,
+			String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+			String renditionFilter, Boolean includePathSegment, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getFolderTree(repositoryId, folderId, depth, filter, includeAllowableActions,
+					includeRelationships, renditionFilter, includePathSegment, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<ObjectParentData> getObjectParents(String repositoryId, String objectId, String filter,
+			Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
+			Boolean includeRelativePathSegment, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getObjectParents(repositoryId, objectId, filter, includeAllowableActions,
+					includeRelationships, renditionFilter, includeRelativePathSegment, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ObjectServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ObjectServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ObjectServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/ObjectServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,224 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.Acl;
+import org.apache.chemistry.opencmis.commons.api.AllowableActions;
+import org.apache.chemistry.opencmis.commons.api.ContentStream;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.FailedToDeleteData;
+import org.apache.chemistry.opencmis.commons.api.Holder;
+import org.apache.chemistry.opencmis.commons.api.ObjectData;
+import org.apache.chemistry.opencmis.commons.api.ObjectService;
+import org.apache.chemistry.opencmis.commons.api.Properties;
+import org.apache.chemistry.opencmis.commons.api.RenditionData;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+import org.apache.chemistry.opencmis.commons.enums.UnfileObject;
+import org.apache.chemistry.opencmis.commons.enums.VersioningState;
+
+public class ObjectServiceImpl extends AbstractLocalService implements ObjectService {
+
+	/**
+	 * Constructor.
+	 */
+	public ObjectServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public String createDocument(String repositoryId, Properties properties, String folderId,
+			ContentStream contentStream, VersioningState versioningState, List<String> policies, Acl addAces,
+			Acl removeAces, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.createDocument(repositoryId, properties, folderId, contentStream, versioningState, policies,
+					addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public String createDocumentFromSource(String repositoryId, String sourceId, Properties properties,
+			String folderId, VersioningState versioningState, List<String> policies, Acl addAces, Acl removeAces,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.createDocumentFromSource(repositoryId, sourceId, properties, folderId, versioningState,
+					policies, addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public String createFolder(String repositoryId, Properties properties, String folderId, List<String> policies,
+			Acl addAces, Acl removeAces, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.createFolder(repositoryId, properties, folderId, policies, addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public String createPolicy(String repositoryId, Properties properties, String folderId, List<String> policies,
+			Acl addAces, Acl removeAces, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.createPolicy(repositoryId, properties, folderId, policies, addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public String createRelationship(String repositoryId, Properties properties, List<String> policies, Acl addAces,
+			Acl removeAces, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.createRelationship(repositoryId, properties, policies, addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void deleteContentStream(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.deleteContentStream(repositoryId, objectId, changeToken, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void deleteObject(String repositoryId, String objectId, Boolean allVersions, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.deleteObject(repositoryId, objectId, allVersions, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public FailedToDeleteData deleteTree(String repositoryId, String folderId, Boolean allVersions,
+			UnfileObject unfileObjects, Boolean continueOnFailure, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.deleteTree(repositoryId, folderId, allVersions, unfileObjects, continueOnFailure, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public AllowableActions getAllowableActions(String repositoryId, String objectId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getAllowableActions(repositoryId, objectId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ContentStream getContentStream(String repositoryId, String objectId, String streamId, BigInteger offset,
+			BigInteger length, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getContentStream(repositoryId, objectId, streamId, offset, length, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ObjectData getObject(String repositoryId, String objectId, String filter, Boolean includeAllowableActions,
+			IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
+			Boolean includeAcl, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getObject(repositoryId, objectId, filter, includeAllowableActions, includeRelationships,
+					renditionFilter, includePolicyIds, includeAcl, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ObjectData getObjectByPath(String repositoryId, String path, String filter, Boolean includeAllowableActions,
+			IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds,
+			Boolean includeAcl, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getObjectByPath(repositoryId, path, filter, includeAllowableActions, includeRelationships,
+					renditionFilter, includePolicyIds, includeAcl, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public Properties getProperties(String repositoryId, String objectId, String filter, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getProperties(repositoryId, objectId, filter, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<RenditionData> getRenditions(String repositoryId, String objectId, String renditionFilter,
+			BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getRenditions(repositoryId, objectId, renditionFilter, maxItems, skipCount, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void moveObject(String repositoryId, Holder<String> objectId, String targetFolderId, String sourceFolderId,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.moveObject(repositoryId, objectId, targetFolderId, sourceFolderId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void setContentStream(String repositoryId, Holder<String> objectId, Boolean overwriteFlag,
+			Holder<String> changeToken, ContentStream contentStream, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.setContentStream(repositoryId, objectId, overwriteFlag, changeToken, contentStream, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void updateProperties(String repositoryId, Holder<String> objectId, Holder<String> changeToken,
+			Properties properties, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.updateProperties(repositoryId, objectId, changeToken, properties, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/PolicyServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/PolicyServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/PolicyServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/PolicyServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,52 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.util.List;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.ObjectData;
+import org.apache.chemistry.opencmis.commons.api.PolicyService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+
+public class PolicyServiceImpl extends AbstractLocalService implements PolicyService {
+
+	/**
+	 * Constructor.
+	 */
+	public PolicyServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public void applyPolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.applyPolicy(repositoryId, policyId, objectId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<ObjectData> getAppliedPolicies(String repositoryId, String objectId, String filter,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getAppliedPolicies(repositoryId, objectId, filter, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void removePolicy(String repositoryId, String policyId, String objectId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.removePolicy(repositoryId, policyId, objectId, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RelationshipServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RelationshipServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RelationshipServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RelationshipServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,35 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.math.BigInteger;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.ObjectList;
+import org.apache.chemistry.opencmis.commons.api.RelationshipService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.RelationshipDirection;
+
+public class RelationshipServiceImpl extends AbstractLocalService implements RelationshipService {
+
+	/**
+	 * Constructor.
+	 */
+	public RelationshipServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public ObjectList getObjectRelationships(String repositoryId, String objectId, Boolean includeSubRelationshipTypes,
+			RelationshipDirection relationshipDirection, String typeId, String filter, Boolean includeAllowableActions,
+			BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getObjectRelationships(repositoryId, objectId, includeSubRelationshipTypes,
+					relationshipDirection, typeId, filter, includeAllowableActions, maxItems, skipCount, extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RepositoryServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RepositoryServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/RepositoryServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,82 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.RepositoryInfo;
+import org.apache.chemistry.opencmis.commons.api.RepositoryService;
+import org.apache.chemistry.opencmis.commons.api.TypeDefinition;
+import org.apache.chemistry.opencmis.commons.api.TypeDefinitionContainer;
+import org.apache.chemistry.opencmis.commons.api.TypeDefinitionList;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+
+/**
+ * Repository Service local client.
+ */
+public class RepositoryServiceImpl extends AbstractLocalService implements RepositoryService {
+
+	/**
+	 * Constructor.
+	 */
+	public RepositoryServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getRepositoryInfo(repositoryId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
+		CmisService service = getService(null);
+
+		try {
+			return service.getRepositoryInfos(extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public TypeDefinition getTypeDefinition(String repositoryId, String typeId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getTypeDefinition(repositoryId, typeId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public TypeDefinitionList getTypeChildren(String repositoryId, String typeId, Boolean includePropertyDefinitions,
+			BigInteger maxItems, BigInteger skipCount, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getTypeChildren(repositoryId, typeId, includePropertyDefinitions, maxItems, skipCount,
+					extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<TypeDefinitionContainer> getTypeDescendants(String repositoryId, String typeId, BigInteger depth,
+			Boolean includePropertyDefinitions, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getTypeDescendants(repositoryId, typeId, depth, includePropertyDefinitions, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+}

Added: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/VersioningServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/VersioningServiceImpl.java?rev=935641&view=auto
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/VersioningServiceImpl.java (added)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/local/VersioningServiceImpl.java Mon Apr 19 16:00:02 2010
@@ -0,0 +1,98 @@
+package org.apache.chemistry.opencmis.client.bindings.spi.local;
+
+import java.util.List;
+
+import org.apache.chemistry.opencmis.client.bindings.spi.Session;
+import org.apache.chemistry.opencmis.commons.api.Acl;
+import org.apache.chemistry.opencmis.commons.api.ContentStream;
+import org.apache.chemistry.opencmis.commons.api.ExtensionsData;
+import org.apache.chemistry.opencmis.commons.api.Holder;
+import org.apache.chemistry.opencmis.commons.api.ObjectData;
+import org.apache.chemistry.opencmis.commons.api.Properties;
+import org.apache.chemistry.opencmis.commons.api.VersioningService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisService;
+import org.apache.chemistry.opencmis.commons.api.server.CmisServiceFactory;
+import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
+
+public class VersioningServiceImpl extends AbstractLocalService implements VersioningService {
+
+	/**
+	 * Constructor.
+	 */
+	public VersioningServiceImpl(Session session, CmisServiceFactory factory) {
+		setSession(session);
+		setServiceFactory(factory);
+	}
+
+	public void cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.cancelCheckOut(repositoryId, objectId, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void checkIn(String repositoryId, Holder<String> objectId, Boolean major, Properties properties,
+			ContentStream contentStream, String checkinComment, List<String> policies, Acl addAces, Acl removeAces,
+			ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.checkIn(repositoryId, objectId, major, properties, contentStream, checkinComment, policies,
+					addAces, removeAces, extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public void checkOut(String repositoryId, Holder<String> objectId, ExtensionsData extension,
+			Holder<Boolean> contentCopied) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			service.checkOut(repositoryId, objectId, extension, contentCopied);
+		} finally {
+			service.close();
+		}
+	}
+
+	public List<ObjectData> getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
+			Boolean includeAllowableActions, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getAllVersions(repositoryId, objectId, versionSeriesId, filter, includeAllowableActions,
+					extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
+			Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
+			String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getObjectOfLatestVersion(repositoryId, objectId, versionSeriesId, major, filter,
+					includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeAcl,
+					extension);
+		} finally {
+			service.close();
+		}
+	}
+
+	public Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
+			Boolean major, String filter, ExtensionsData extension) {
+		CmisService service = getService(repositoryId);
+
+		try {
+			return service.getPropertiesOfLatestVersion(repositoryId, objectId, versionSeriesId, major, filter,
+					extension);
+		} finally {
+			service.close();
+		}
+	}
+}

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java Mon Apr 19 16:00:02 2010
@@ -38,6 +38,8 @@ import org.apache.commons.logging.LogFac
  */
 public class CmisWebServicesSpi implements CmisSpiFactory, CmisSpi {
 
+	private static final long serialVersionUID = 1L;
+
 	private static Log log = LogFactory.getLog(CmisWebServicesSpi.class);
 
 	private RepositoryService repositoryService;

Modified: incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/RepositoryMap.java
URL: http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/RepositoryMap.java?rev=935641&r1=935640&r2=935641&view=diff
==============================================================================
--- incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/RepositoryMap.java (original)
+++ incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/src/main/java/org/apache/chemistry/opencmis/fileshare/RepositoryMap.java Mon Apr 19 16:00:02 2010
@@ -76,7 +76,7 @@ public class RepositoryMap {
 		}
 
 		// get repository object
-		return getRepository(repositoryId);
+		return repositoryId == null ? null : getRepository(repositoryId);
 	}
 
 	/**