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/07/06 16:53:20 UTC
svn commit: r1500288 - in /chemistry/opencmis/trunk: ./
chemistry-opencmis-client/chemistry-opencmis-client-bindings/
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservic...
Author: fmui
Date: Sat Jul 6 14:53:19 2013
New Revision: 1500288
URL: http://svn.apache.org/r1500288
Log:
OpenCMIS client: added experimental Axis2 support
Added:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/Axis2PortProvider.java
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/pom.xml
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractPortProvider.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-assembly.xml
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-cxf-assembly.xml
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-mac-assembly.xml
chemistry/opencmis/trunk/pom.xml
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/pom.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/pom.xml?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/pom.xml (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/pom.xml Sat Jul 6 14:53:19 2013
@@ -112,7 +112,13 @@
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
<scope>provided</scope>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-kernel</artifactId>
+ <version>${axis2.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractPortProvider.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/AbstractPortProvider.java?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractPortProvider.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/AbstractPortProvider.java Sat Jul 6 14:53:19 2013
@@ -178,7 +178,9 @@ public abstract class AbstractPortProvid
private SoftReference<Service> serviceObject;
private final URL endpointUrl;
- public CmisServiceHolder(final CmisWebSerivcesService service, final URL endpointUrl) throws NoSuchMethodException, SecurityException, InstantiationException, InvocationTargetException, IllegalAccessException {
+ public CmisServiceHolder(final CmisWebSerivcesService service, final URL endpointUrl)
+ throws NoSuchMethodException, SecurityException, InstantiationException, InvocationTargetException,
+ IllegalAccessException {
this.service = service;
this.endpointUrl = endpointUrl;
this.serviceObject = new SoftReference<Service>(createServiceObject());
@@ -488,19 +490,22 @@ public abstract class AbstractPortProvid
return new CmisServiceHolder(service, endpointUrl);
} catch (CmisBaseException ce) {
throw ce;
+ } catch (HTTPException he) {
+ String message = "Cannot connect to Web Services [" + service.getServiceName() + "]: " + he.getMessage();
+ if (he.getStatusCode() == 401) {
+ throw new CmisUnauthorizedException(message, he);
+ } else if (he.getStatusCode() == 407) {
+ throw new CmisProxyAuthenticationException(message, he);
+ } else {
+ throw new CmisConnectionException(message, he);
+ }
+ } catch (InvocationTargetException ite) {
+ String message = "Cannot initalize Web Services service object [" + service.getServiceName() + "]: "
+ + ite.getCause().getMessage();
+ throw new CmisConnectionException(message, ite);
} catch (Exception e) {
String message = "Cannot initalize Web Services service object [" + service.getServiceName() + "]: "
+ e.getMessage();
-
- if (e instanceof HTTPException) {
- HTTPException he = (HTTPException) e;
- if (he.getStatusCode() == 401) {
- throw new CmisUnauthorizedException(message, e);
- } else if (he.getStatusCode() == 407) {
- throw new CmisProxyAuthenticationException(message, e);
- }
- }
-
throw new CmisConnectionException(message, e);
}
}
Added: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/Axis2PortProvider.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/Axis2PortProvider.java?rev=1500288&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/Axis2PortProvider.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/Axis2PortProvider.java Sat Jul 6 14:53:19 2013
@@ -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.chemistry.opencmis.client.bindings.spi.webservices;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.soap.MTOMFeature;
+
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.Stub;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.chemistry.opencmis.client.bindings.impl.CmisBindingsHelper;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
+import org.apache.chemistry.opencmis.commons.spi.AuthenticationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Element;
+
+/**
+ * Axis2 JAX-WS implementation
+ *
+ * !!! EXPERIMENTAL !!!
+ */
+public class Axis2PortProvider extends AbstractPortProvider {
+ private static final Logger LOG = LoggerFactory.getLogger(Axis2PortProvider.class);
+
+ /**
+ * Creates a port object.
+ */
+ protected BindingProvider createPortObject(CmisServiceHolder serviceHolder) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Creating Web Service port object of " + serviceHolder.getServiceName() + "...");
+ }
+
+ try {
+ // create port object
+ BindingProvider portObject = createPortObjectFromServiceHolder(serviceHolder, new MTOMFeature());
+ ServiceClient serviceClient = ((Stub) portObject)._getServiceClient();
+
+ // add SOAP and HTTP authentication headers
+ AuthenticationProvider authProvider = CmisBindingsHelper.getAuthenticationProvider(getSession());
+ Map<String, List<String>> httpHeaders = null;
+ if (authProvider != null) {
+ // SOAP header
+ Element soapHeader = authProvider.getSOAPHeaders(portObject);
+ if (soapHeader != null) {
+ TransformerFactory transFactory = TransformerFactory.newInstance();
+ Transformer transformer = transFactory.newTransformer();
+ StringWriter headerXml = new StringWriter();
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ transformer.transform(new DOMSource(soapHeader), new StreamResult(headerXml));
+
+ serviceClient.addStringHeader(new QName(soapHeader.getNamespaceURI(), soapHeader.getLocalName()),
+ headerXml.toString());
+ /*
+ * Map<QName, List<String>> header = new HashMap<QName,
+ * List<String>>(); header.put(new
+ * QName(soapHeader.getNamespaceURI(),
+ * soapHeader.getLocalName()),
+ * Collections.singletonList(headerXml.toString()));
+ * portObject.getRequestContext().put(
+ * "jaxws.binding.soap.headers.outbound", header);
+ */
+ }
+
+ // HTTP header
+ String url = (serviceHolder.getEndpointUrl() != null ? serviceHolder.getEndpointUrl().toString()
+ : serviceHolder.getServiceObject().getWSDLDocumentLocation().toString());
+ httpHeaders = authProvider.getHTTPHeaders(url);
+
+ // TODO: set SSL Factory
+
+ // TODO: set Hostname Verifier
+ }
+
+ // set HTTP headers
+ setHTTPHeaders(portObject, httpHeaders);
+
+ // set endpoint URL
+ setEndpointUrl(portObject, serviceHolder.getEndpointUrl());
+
+ // HTTP settings
+ serviceClient.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, "true");
+
+ // timeouts
+ int connectTimeout = getSession().get(SessionParameter.CONNECT_TIMEOUT, -1);
+ if (connectTimeout >= 0) {
+ serviceClient.getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT,
+ Integer.valueOf(connectTimeout));
+ }
+
+ int readTimeout = getSession().get(SessionParameter.READ_TIMEOUT, -1);
+ if (readTimeout >= 0) {
+ serviceClient.getOptions().setProperty(HTTPConstants.SO_TIMEOUT, Integer.valueOf(readTimeout));
+ }
+
+ return portObject;
+ } catch (CmisBaseException ce) {
+ throw ce;
+ } catch (Exception e) {
+ throw new CmisConnectionException("Cannot initalize Web Services port object: " + e.getMessage(), e);
+ }
+ }
+}
Modified: 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/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices/CmisWebServicesSpi.java Sat Jul 6 14:53:19 2013
@@ -44,6 +44,7 @@ public class CmisWebServicesSpi implemen
public static final String JAXWS_IMPL_JRE = "sunjre";
public static final String JAXWS_IMPL_CXF = "cxf";
public static final String JAXWS_IMPL_WEBSPHERE = "websphere";
+ public static final String JAXWS_IMPL_AXIS2 = "axis2";
private static final Logger LOG = LoggerFactory.getLogger(CmisWebServicesSpi.class);
@@ -83,6 +84,8 @@ public class CmisWebServicesSpi implemen
portProvider = new CXFPortProvider();
} else if (JAXWS_IMPL_WEBSPHERE.equals(jaxwsImpl)) {
portProvider = new WebSpherePortProvider();
+ } else if (JAXWS_IMPL_AXIS2.equals(jaxwsImpl)) {
+ portProvider = new Axis2PortProvider();
} else {
throw new CmisRuntimeException("Unknown JAX-WS implementation specified!");
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-assembly.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-assembly.xml?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-assembly.xml (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-assembly.xml Sat Jul 6 14:53:19 2013
@@ -66,8 +66,9 @@
<useTransitiveFiltering>true</useTransitiveFiltering>
<excludes>
<exclude>com.sun.xml.ws:jaxws-rt</exclude>
- <exclude>org.apache.cxf:cxf-rt-frontend-jaxws</exclude>
- <exclude>org.apache.cxf:cxf-rt-transports-http</exclude>
+ <exclude>wsdl4j</exclude>
+ <exclude>org.apache.cxf</exclude>
+ <exclude>org.apache.axis2</exclude>
<exclude>org.apache:apache-jar-resource-bundle</exclude>
</excludes>
</dependencySet>
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-cxf-assembly.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-cxf-assembly.xml?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-cxf-assembly.xml (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-cxf-assembly.xml Sat Jul 6 14:53:19 2013
@@ -68,6 +68,7 @@
<useTransitiveFiltering>true</useTransitiveFiltering>
<excludes>
<exclude>com.sun.xml.ws:jaxws-rt</exclude>
+ <exclude>org.apache.axis2</exclude>
<exclude>org.apache:apache-jar-resource-bundle</exclude>
</excludes>
</dependencySet>
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-mac-assembly.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-mac-assembly.xml?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-mac-assembly.xml (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/assembly/workbench-mac-assembly.xml Sat Jul 6 14:53:19 2013
@@ -76,8 +76,9 @@
<useTransitiveFiltering>true</useTransitiveFiltering>
<excludes>
<exclude>com.sun.xml.ws:jaxws-rt</exclude>
- <exclude>org.apache.cxf:cxf-rt-frontend-jaxws</exclude>
- <exclude>org.apache.cxf:cxf-rt-transports-http</exclude>
+ <exclude>wsdl4j</exclude>
+ <exclude>org.apache.cxf</exclude>
+ <exclude>org.apache.axis2</exclude>
<exclude>org.apache:apache-jar-resource-bundle</exclude>
</excludes>
</dependencySet>
Modified: chemistry/opencmis/trunk/pom.xml
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/pom.xml?rev=1500288&r1=1500287&r2=1500288&view=diff
==============================================================================
--- chemistry/opencmis/trunk/pom.xml (original)
+++ chemistry/opencmis/trunk/pom.xml Sat Jul 6 14:53:19 2013
@@ -235,6 +235,7 @@
<slf4j.version>1.7.5</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<cxf.version>2.7.4</cxf.version>
+ <axis2.version>1.6.2</axis2.version>
</properties>
<build>