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 2013/06/13 14:18:29 UTC
svn commit: r1492640 - in /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/src/main/ja...
Author: fmui
Date: Thu Jun 13 12:18:28 2013
New Revision: 1492640
URL: http://svn.apache.org/r1492640
Log:
OpenCMIS client: added session parameter to force the CMIS version to use (workaround for non-compliant servers)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingsHelper.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractWebServicesService.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/RepositoryServiceImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingImpl.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingImpl.java Thu Jun 13 12:18:28 2013
@@ -25,6 +25,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.CmisSpi;
import org.apache.chemistry.opencmis.client.bindings.spi.SessionAwareAuthenticationProvider;
import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
import org.apache.chemistry.opencmis.commons.impl.ClassLoaderUtil;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.BindingsObjectFactoryImpl;
import org.apache.chemistry.opencmis.commons.spi.AclService;
@@ -126,6 +127,16 @@ public class CmisBindingImpl implements
}
}
+ // force CMIS version
+ String forceCmisVersion = sessionParameters.get(SessionParameter.FORCE_CMIS_VERSION);
+ if (forceCmisVersion != null) {
+ try {
+ session.put(CmisBindingsHelper.FORCE_CMIS_VERSION, CmisVersion.fromValue(forceCmisVersion));
+ } catch (IllegalArgumentException e) {
+ throw new IllegalArgumentException("Invalid CMIS version value: " + forceCmisVersion);
+ }
+ }
+
// set up caches
clearAllCaches();
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingsHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingsHelper.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingsHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/impl/CmisBindingsHelper.java Thu Jun 13 12:18:28 2013
@@ -24,6 +24,7 @@ import org.apache.chemistry.opencmis.cli
import org.apache.chemistry.opencmis.client.bindings.spi.CmisSpi;
import org.apache.chemistry.opencmis.client.bindings.spi.http.HttpInvoker;
import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
import org.apache.chemistry.opencmis.commons.impl.ClassLoaderUtil;
@@ -41,6 +42,7 @@ public final class CmisBindingsHelper {
public static final String HTTP_INVOKER_OBJECT = "org.apache.chemistry.opencmis.binding.httpinvoker.object";
public static final String AUTHENTICATION_PROVIDER_OBJECT = "org.apache.chemistry.opencmis.binding.auth.object";
public static final String ACCEPT_LANGUAGE = "org.apache.chemistry.opencmis.binding.acceptLanguage";
+ public static final String FORCE_CMIS_VERSION = "org.apache.chemistry.opencmis.cmisversion";
/**
* Private constructor.
@@ -131,6 +133,13 @@ public final class CmisBindingsHelper {
}
/**
+ * Returns a CMIS version if the user set one, <code>null</code> otherwise.
+ */
+ public static CmisVersion getForcedCmisVersion(BindingSession session) {
+ return (CmisVersion) session.get(FORCE_CMIS_VERSION);
+ }
+
+ /**
* Returns the authentication provider from the session or <code>null</code>
* if no authentication provider is set.
*/
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.java Thu Jun 13 12:18:28 2013
@@ -140,6 +140,10 @@ public abstract class AbstractAtomPubSer
* Return the CMIS version of the given repository.
*/
protected CmisVersion getCmisVersion(String repositoryId) {
+ if (CmisBindingsHelper.getForcedCmisVersion(session) != null) {
+ return CmisBindingsHelper.getForcedCmisVersion(session);
+ }
+
RepositoryInfoCache cache = CmisBindingsHelper.getRepositoryInfoCache(session);
RepositoryInfo info = cache.get(repositoryId);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractWebServicesService.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractWebServicesService.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractWebServicesService.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractWebServicesService.java Thu Jun 13 12:18:28 2013
@@ -150,6 +150,10 @@ public abstract class AbstractWebService
* Return the CMIS version of the given repository.
*/
protected CmisVersion getCmisVersion(String repositoryId) {
+ if (CmisBindingsHelper.getForcedCmisVersion(session) != null) {
+ return CmisBindingsHelper.getForcedCmisVersion(session);
+ }
+
RepositoryInfoCache cache = CmisBindingsHelper.getRepositoryInfoCache(session);
RepositoryInfo info = cache.get(repositoryId);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/RepositoryServiceImpl.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/RepositoryServiceImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/RepositoryServiceImpl.java Thu Jun 13 12:18:28 2013
@@ -27,6 +27,7 @@ import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
+import org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingsHelper;
import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
import org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
@@ -60,14 +61,30 @@ public class RepositoryServiceImpl exten
}
public List<RepositoryInfo> getRepositoryInfos(ExtensionsData extension) {
- RepositoryServicePort port = portProvider.getRepositoryServicePort(CmisVersion.CMIS_1_1, "getRepositories");
+ CmisVersion cmisVersion = CmisBindingsHelper.getForcedCmisVersion(getSession());
+ if (cmisVersion == null) {
+ cmisVersion = CmisVersion.CMIS_1_1;
+ }
- List<RepositoryInfo> infos = null;
+ RepositoryServicePort port = portProvider.getRepositoryServicePort(cmisVersion, "getRepositories");
+
+ List<CmisRepositoryEntryType> entries = null;
try {
// get the list of repositories
- List<CmisRepositoryEntryType> entries = port.getRepositories(convert(extension));
+ entries = port.getRepositories(convert(extension));
+ } catch (CmisException e) {
+ throw convertException(e);
+ } catch (Exception e) {
+ throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+ } finally {
+ portProvider.endCall(port);
+ }
- if (entries != null) {
+ List<RepositoryInfo> infos = null;
+ if (entries != null) {
+ port = portProvider.getRepositoryServicePort(cmisVersion, "getRepositoryInfo");
+
+ try {
infos = new ArrayList<RepositoryInfo>();
// iterate through the list and fetch repository infos
@@ -75,20 +92,25 @@ public class RepositoryServiceImpl exten
CmisRepositoryInfoType info = port.getRepositoryInfo(entry.getRepositoryId(), null);
infos.add(convert(info));
}
+ } catch (CmisException e) {
+ throw convertException(e);
+ } catch (Exception e) {
+ throw new CmisRuntimeException("Error: " + e.getMessage(), e);
+ } finally {
+ portProvider.endCall(port);
}
- } catch (CmisException e) {
- throw convertException(e);
- } catch (Exception e) {
- throw new CmisRuntimeException("Error: " + e.getMessage(), e);
- } finally {
- portProvider.endCall(port);
}
return infos;
}
public RepositoryInfo getRepositoryInfo(String repositoryId, ExtensionsData extension) {
- RepositoryServicePort port = portProvider.getRepositoryServicePort(CmisVersion.CMIS_1_1, "getRepositoryInfo");
+ CmisVersion cmisVersion = CmisBindingsHelper.getForcedCmisVersion(getSession());
+ if (cmisVersion == null) {
+ cmisVersion = CmisVersion.CMIS_1_1;
+ }
+
+ RepositoryServicePort port = portProvider.getRepositoryServicePort(cmisVersion, "getRepositoryInfo");
try {
return convert(port.getRepositoryInfo(repositoryId, convert(extension)));
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java?rev=1492640&r1=1492639&r2=1492640&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java Thu Jun 13 12:18:28 2013
@@ -138,7 +138,8 @@ package org.apache.chemistry.opencmis.co
* <td>AtomPub, Web Services, Browser</td>
* <td>class name</td>
* <td>no</td>
- * <td>org.apache.chemistry.opencmis.client.bindings.spi.http.DefaultHttpInvoker</td>
+ * <td>org.apache.chemistry.opencmis.client.bindings.spi.http.DefaultHttpInvoker
+ * </td>
* </tr>
* <tr>
* <td>{@link #COMPRESSION}</td>
@@ -507,6 +508,12 @@ public final class SessionParameter {
/** Class name of the binding class. */
public static final String BINDING_SPI_CLASS = "org.apache.chemistry.opencmis.binding.spi.classname";
+ /**
+ * Forces OpenCMIS to use the specified CMIS version and ignore the CMIS
+ * version reported by the repository.
+ */
+ public static final String FORCE_CMIS_VERSION = "org.apache.chemistry.opencmis.cmisversion";
+
/** URL of the AtomPub service document. */
public static final String ATOMPUB_URL = "org.apache.chemistry.opencmis.binding.atompub.url";