summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org')
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java186
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java63
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java57
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java81
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java75
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java351
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java61
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java86
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java691
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceServlet.java294
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java454
-rwxr-xr-xbranches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyAxisConfigurator.java173
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyDispatcher.java103
-rw-r--r--branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyListingAgent.java411
14 files changed, 0 insertions, 3086 deletions
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
deleted file mode 100644
index 7c1e6529a8..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingInvoker.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import javax.xml.namespace.QName;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAPBody;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.addressing.EndpointReferenceHelper;
-import org.apache.axis2.client.OperationClient;
-import org.apache.axis2.client.Options;
-import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.tuscany.sca.assembly.xml.Constants;
-import org.apache.tuscany.sca.interfacedef.util.FaultException;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.invocation.Message;
-import org.apache.tuscany.sca.runtime.ReferenceParameters;
-
-/**
- * Axis2BindingInvoker uses an Axis2 OperationClient to invoke a remote web service
- */
-public class Axis2BindingInvoker implements Invoker {
-
- private ServiceClient serviceClient;
- private QName wsdlOperationName;
- private Options options;
- private SOAPFactory soapFactory;
-
- public static final QName QNAME_WSA_FROM =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_FROM);
- public static final QName QNAME_WSA_TO =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_TO);
-
- public static final QName CALLBACK_REFERENCE_REFPARM_QN = new QName(Constants.SCA10_TUSCANY_NS, "CallbackReference");
- public static final QName CALLBACK_ID_REFPARM_QN = new QName(Constants.SCA10_TUSCANY_NS, "CallbackID");
- public static final QName CONVERSATION_ID_REFPARM_QN = new QName(Constants.SCA10_TUSCANY_NS, "ConversationID");
-
- public Axis2BindingInvoker(ServiceClient serviceClient,
- QName wsdlOperationName,
- Options options,
- SOAPFactory soapFactory) {
- this.serviceClient = serviceClient;
- this.wsdlOperationName = wsdlOperationName;
- this.options = options;
- this.soapFactory = soapFactory;
- }
-
- public Message invoke(Message msg) {
- try {
- Object resp = invokeTarget(msg);
- msg.setBody(resp);
- } catch (AxisFault e) {
- if (e.getDetail() != null) {
- FaultException f = new FaultException(e.getMessage(), e.getDetail());
- f.setLogical(e.getDetail().getQName());
- msg.setFaultBody(f);
- } else {
- msg.setFaultBody(e);
- }
- } catch (Throwable e) {
- msg.setFaultBody(e);
- }
-
- return msg;
- }
-
- protected Object invokeTarget(Message msg) throws AxisFault {
- OperationClient operationClient = createOperationClient(msg);
-
- // ensure connections are tracked so that they can be closed by the reference binding
- MessageContext requestMC = operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
- requestMC.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
- requestMC.getOptions().setTimeOutInMilliSeconds(120000L);
-
- operationClient.execute(true);
-
- MessageContext responseMC = operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-
- OMElement response = responseMC.getEnvelope().getBody().getFirstElement();
-
- // FIXME: [rfeng] We have to pay performance penality to build the complete OM as the operationClient.complete() will
- // release the underlying HTTP connection.
- // Force the response to be populated, see https://issues.apache.org/jira/browse/TUSCANY-1541
- if (response != null) {
- response.build();
- }
-
- operationClient.complete(requestMC);
-
- return response;
- }
-
- @SuppressWarnings("deprecation")
- protected OperationClient createOperationClient(Message msg) throws AxisFault {
- SOAPEnvelope env = soapFactory.getDefaultEnvelope();
- Object[] args = (Object[])msg.getBody();
- if (args != null && args.length > 0) {
- SOAPBody body = env.getBody();
- for (Object bc : args) {
- if (bc instanceof OMElement) {
- body.addChild((OMElement)bc);
- } else {
- throw new IllegalArgumentException(
- "Can't handle mixed payloads betweem OMElements and other types.");
- }
- }
- }
- MessageContext requestMC = new MessageContext();
- requestMC.setEnvelope(env);
-
- // Axis2 operationClients can not be shared so create a new one for each request
- OperationClient operationClient = serviceClient.createClient(wsdlOperationName);
- operationClient.setOptions(options);
-
- ReferenceParameters parameters = msg.getTo().getReferenceParameters();
-
- // if target endpoint was not specified when this invoker was created,
- // use dynamically specified target endpoint passed in on this call
- EndpointReference toEPR = options.getTo();
- if (toEPR == null) {
- org.apache.tuscany.sca.runtime.EndpointReference ep = msg.getTo();
- toEPR = new EndpointReference(ep.getURI());
- }
-
- // set callback endpoint and callback ID for WS-Addressing header
- if (parameters.getCallbackReference() != null) {
- toEPR.addReferenceParameter(CALLBACK_REFERENCE_REFPARM_QN,
- parameters.getCallbackReference().getBinding().getURI());
- }
- if (parameters.getCallbackID() != null) {
- //FIXME: serialize callback ID to XML in case it is not a string
- toEPR.addReferenceParameter(CALLBACK_ID_REFPARM_QN, parameters.getCallbackID().toString());
- }
-
- // set conversation ID for WS-Addressing header
- //FIXME: get conversation ID from the message's callable reference
- Object conversationId = parameters.getConversationID();
- if (conversationId != null) {
- //FIXME: serialize conversation ID to XML in case it is not a string
- toEPR.addReferenceParameter(CONVERSATION_ID_REFPARM_QN, conversationId.toString());
- }
-
- // add WS-Addressing header
- //FIXME: is there any way to use the Axis2 addressing support for this?
- if (toEPR != null) {
- SOAPEnvelope sev = requestMC.getEnvelope();
- SOAPHeader sh = sev.getHeader();
- OMElement epr =
- EndpointReferenceHelper.toOM(sev.getOMFactory(),
- toEPR,
- QNAME_WSA_TO,
- AddressingConstants.Final.WSA_NAMESPACE);
- sh.addChild(epr);
- requestMC.setTo(toEPR);
- }
-
- operationClient.addMessageContext(requestMC);
-
- return operationClient;
- }
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java
deleted file mode 100644
index 610c376bc9..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2BindingProviderFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.provider.BindingProviderFactory;
-import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
-import org.apache.tuscany.sca.provider.ServiceBindingProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-
-/**
- * Axis2BindingProviderFactory
- *
- * @version $Rev$ $Date$
- */
-
-public class Axis2BindingProviderFactory implements BindingProviderFactory<WebServiceBinding> {
-
- private MessageFactory messageFactory;
- private ServletHost servletHost;
-
- public Axis2BindingProviderFactory(ExtensionPointRegistry extensionPoints) {
- ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
- this.servletHost = servletHosts.getServletHosts().get(0);
- ModelFactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(ModelFactoryExtensionPoint.class);
- this.messageFactory = modelFactories.getFactory(MessageFactory.class);
- }
-
- public ReferenceBindingProvider createReferenceBindingProvider(RuntimeComponent component, RuntimeComponentReference reference, WebServiceBinding binding) {
- return new Axis2ReferenceBindingProvider(component, reference, binding, servletHost, messageFactory);
- }
-
- public ServiceBindingProvider createServiceBindingProvider(RuntimeComponent component, RuntimeComponentService service, WebServiceBinding binding) {
- return new Axis2ServiceBindingProvider(component, service, binding, servletHost, messageFactory);
- }
-
- public Class<WebServiceBinding> getModelType() {
- return WebServiceBinding.class;
- }
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java
deleted file mode 100644
index b3164c19ca..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2OneWayBindingInvoker.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import javax.xml.namespace.QName;
-
-import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.client.OperationClient;
-import org.apache.axis2.client.Options;
-import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.tuscany.sca.invocation.Message;
-
-public class Axis2OneWayBindingInvoker extends Axis2BindingInvoker {
-
- public Axis2OneWayBindingInvoker(ServiceClient serviceClient,
- QName wsdlOperationName,
- Options options,
- SOAPFactory soapFactory) {
-
- super(serviceClient, wsdlOperationName, options, soapFactory);
- }
-
- @Override
- protected Object invokeTarget(Message msg) throws AxisFault {
- OperationClient operationClient = createOperationClient(msg);
-
- // ensure connections are tracked so that they can be closed by the reference binding
- MessageContext requestMC = operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
- requestMC.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
-
- operationClient.execute(false);
-
- // REVIEW it seems ok to return null
- return null;
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java
deleted file mode 100644
index 7a33a8f819..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ReferenceBindingProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
-
-public class Axis2ReferenceBindingProvider implements ReferenceBindingProvider {
-
- private WebServiceBinding wsBinding;
- private Axis2ServiceClient axisClient;
-
- public Axis2ReferenceBindingProvider(RuntimeComponent component,
- RuntimeComponentReference reference,
- WebServiceBinding wsBinding,
- ServletHost servletHost,
- MessageFactory messageFactory) {
-
- this.wsBinding = wsBinding;
-
- InterfaceContract contract = wsBinding.getBindingInterfaceContract();
- if (contract == null) {
- contract = reference.getInterfaceContract().makeUnidirectional(false);
- if ((contract instanceof JavaInterfaceContract)) {
- contract = Java2WSDLHelper.createWSDLInterfaceContract((JavaInterfaceContract)contract, wsBinding);
- }
- wsBinding.setBindingInterfaceContract(contract);
- }
-
- // Set to use the Axiom data binding
- contract.getInterface().resetDataBinding(OMElement.class.getName());
-
- axisClient = new Axis2ServiceClient(component, reference, wsBinding, servletHost, messageFactory);
- }
-
- public void start() {
- axisClient.start();
- }
-
- public void stop() {
- axisClient.stop();
- }
-
- public InterfaceContract getBindingInterfaceContract() {
- return wsBinding.getBindingInterfaceContract();
- }
-
- public boolean supportsOneWayInvocation() {
- return true;
- }
-
- public Invoker createInvoker(Operation operation) {
- return axisClient.createInvoker(operation);
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
deleted file mode 100644
index 8283241dc7..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceBindingProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.provider.ServiceBindingProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-
-public class Axis2ServiceBindingProvider implements ServiceBindingProvider {
-
- private WebServiceBinding wsBinding;
- private Axis2ServiceProvider axisProvider;
-
- public Axis2ServiceBindingProvider(RuntimeComponent component,
- RuntimeComponentService service,
- WebServiceBinding wsBinding,
- ServletHost servletHost,
- MessageFactory messageFactory) {
-
- this.wsBinding = wsBinding;
-
- InterfaceContract contract = wsBinding.getBindingInterfaceContract();
- if (contract == null) {
- contract = service.getInterfaceContract().makeUnidirectional(false);
- if ((contract instanceof JavaInterfaceContract)) {
- contract = Java2WSDLHelper.createWSDLInterfaceContract((JavaInterfaceContract)contract, wsBinding);
- }
- wsBinding.setBindingInterfaceContract(contract);
- }
-
- // Set to use the Axiom data binding
- contract.getInterface().resetDataBinding(OMElement.class.getName());
-
- axisProvider = new Axis2ServiceProvider(component, service, wsBinding, servletHost, messageFactory);
- }
-
- public void start() {
- axisProvider.start();
- }
-
- public void stop() {
- axisProvider.stop();
- }
-
- public InterfaceContract getBindingInterfaceContract() {
- return wsBinding.getBindingInterfaceContract();
- }
-
- public boolean supportsOneWayInvocation() {
- return true;
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
deleted file mode 100644
index 75a9e46833..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceClient.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.List;
-
-import javax.wsdl.Binding;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
-import javax.wsdl.extensions.soap.SOAPAddress;
-import javax.wsdl.extensions.soap.SOAPOperation;
-import javax.xml.namespace.QName;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.dom.DOMSource;
-
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.addressing.EndpointReferenceHelper;
-import org.apache.axis2.client.Options;
-import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.description.AxisEndpoint;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
-import org.apache.axis2.description.WSDL2Constants;
-import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.neethi.Policy;
-import org.apache.tuscany.sca.assembly.AbstractContract;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.IntentAttachPoint;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
-import org.apache.tuscany.sca.policy.security.ws.Axis2ConfigParamPolicy;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.ws.commons.schema.resolver.URIResolver;
-
-public class Axis2ServiceClient {
-
- private WebServiceBinding wsBinding;
- private ServiceClient serviceClient;
- private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap12");
-
- public Axis2ServiceClient(RuntimeComponent component,
- AbstractContract contract,
- WebServiceBinding wsBinding,
- ServletHost servletHost,
- MessageFactory messageFactory) {
-
- this.wsBinding = wsBinding;
- this.serviceClient = createServiceClient();
- }
-
- protected void start() {
- }
-
- /**
- * Create an Axis2 ServiceClient
- */
- protected ServiceClient createServiceClient() {
- try {
- TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
- ConfigurationContext configContext = tuscanyAxisConfigurator.getConfigurationContext();
-
- configureSecurity(configContext);
-
- Definition wsdlDefinition = wsBinding.getWSDLDefinition().getDefinition();
- setServiceAndPort(wsBinding);
- QName serviceQName = wsBinding.getServiceName();
- String portName = wsBinding.getPortName();
- AxisService axisService =
- createClientSideAxisService(wsdlDefinition, serviceQName, portName, new Options());
-
- return new ServiceClient(configContext, axisService);
- } catch (AxisFault e) {
- throw new RuntimeException(e); // TODO: better exception
- }
- }
-
- /**
- * URI resolver implementation for xml schema
- */
- public static class URIResolverImpl implements URIResolver {
- private Definition definition;
-
- public URIResolverImpl(Definition definition) {
- this.definition = definition;
- }
-
- public org.xml.sax.InputSource resolveEntity(java.lang.String targetNamespace,
- java.lang.String schemaLocation,
- java.lang.String baseUri) {
- try {
- if (baseUri == null) {
- baseUri = definition.getDocumentBaseURI();
- }
- URL url = new URL(new URL(baseUri), schemaLocation);
- return XMLDocumentHelper.getInputSource(url);
- } catch (IOException e) {
- return null;
- }
- }
- }
-
- /**
- * This method is copied from AxisService.createClientSideAxisService to
- * work around http://issues.apache.org/jira/browse/WSCOMMONS-228
- *
- * @param wsdlDefinition
- * @param wsdlServiceName
- * @param portName
- * @param options
- * @return
- * @throws AxisFault
- */
- @Deprecated
- public static AxisService createClientSideAxisService(Definition wsdlDefinition,
- QName wsdlServiceName,
- String portName,
- Options options) throws AxisFault {
- WSDL11ToAxisServiceBuilder serviceBuilder =
- new WSDL11ToAxisServiceBuilder(wsdlDefinition, wsdlServiceName, portName);
- serviceBuilder.setServerSide(false);
- // [rfeng] Add a custom resolver to work around WSCOMMONS-228
- serviceBuilder.setCustomResolver(new URIResolverImpl(wsdlDefinition));
- serviceBuilder.setBaseUri(wsdlDefinition.getDocumentBaseURI());
- // [rfeng]
- AxisService axisService = serviceBuilder.populateService();
- AxisEndpoint axisEndpoint = (AxisEndpoint) axisService.getEndpoints()
- .get(axisService.getEndpointName());
- options.setTo(new EndpointReference(axisEndpoint.getEndpointURL()));
- if (axisEndpoint != null) {
- options.setSoapVersionURI((String) axisEndpoint.getBinding()
- .getProperty(WSDL2Constants.ATTR_WSOAP_VERSION));
- }
- return axisService;
- }
-
-
- /**
- * Ensure the WSDL definition contains a suitable service and port
- */
- protected static void setServiceAndPort(WebServiceBinding wsBinding) {
- Definition wsdlDefinition = wsBinding.getWSDLDefinition().getDefinition();
- QName serviceQName = wsBinding.getServiceName();
- String portName = wsBinding.getPortName();
-
- // If no service is specified in the binding element, allow for WSDL that
- // only contains a portType and not a service and port. Synthesize a
- // service and port using WSDL4J and add them to the wsdlDefinition to
- // keep Axis happy.
- //FIXME: it would be better to do this for all WSDLs to explictly control the
- // service and port that Axis will use, rather than just hoping the user has
- // placed a suitable service and/or port first in the WSDL.
- if (serviceQName == null && wsBinding.getBinding() != null) {
- QName bindingQName = wsBinding.getBindingName();
- Port port = wsdlDefinition.createPort();
- portName = "$port$." + bindingQName.getLocalPart();
- port.setName(portName);
- wsBinding.setPortName(portName);
- port.setBinding(wsBinding.getBinding());
- Service service = wsdlDefinition.createService();
- serviceQName = new QName(bindingQName.getNamespaceURI(),
- "$service$." + bindingQName.getLocalPart());
- service.setQName(serviceQName);
- wsBinding.setServiceName(serviceQName);
- service.addPort(port);
- wsdlDefinition.addService(service);
- }
- }
-
- protected void stop() {
- // close all connections that we have initiated, so that the jetty server
- // can be restarted without seeing ConnectExceptions
- HttpClient httpClient =
- (HttpClient)serviceClient.getServiceContext().getConfigurationContext()
- .getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
- if (httpClient != null)
- ((MultiThreadedHttpConnectionManager)httpClient.getHttpConnectionManager()).shutdown();
- }
-
- /**
- * Create and configure an Axis2BindingInvoker for each operation
- */
- protected Invoker createInvoker(Operation operation) {
- Options options = new Options();
- EndpointReference epTo = getWSATOEPR(wsBinding);
- if (epTo != null) {
- options.setTo(epTo);
- }
- options.setProperty(HTTPConstants.CHUNKED, Boolean.FALSE);
-
- String operationName = operation.getName();
-
- String soapAction = getSOAPAction(operationName);
- if (soapAction != null && soapAction.length() > 1) {
- options.setAction(soapAction);
- }
-
- options.setTimeOutInMilliSeconds(30 * 1000); // 30 seconds
-
- SOAPFactory soapFactory = requiresSOAP12() ? OMAbstractFactory.getSOAP12Factory() : OMAbstractFactory.getSOAP11Factory();
- QName wsdlOperationQName = new QName(operationName);
-
- Axis2BindingInvoker invoker;
- if (operation.isNonBlocking()) {
- invoker = new Axis2OneWayBindingInvoker(serviceClient, wsdlOperationQName, options, soapFactory);
- } else {
- invoker = new Axis2BindingInvoker(serviceClient, wsdlOperationQName, options, soapFactory);
- }
- return invoker;
- }
-
- private boolean requiresSOAP12() {
- if (wsBinding instanceof IntentAttachPoint) {
- List<Intent> intents = ((IntentAttachPoint)wsBinding).getRequiredIntents();
- for (Intent intent : intents) {
- if (SOAP12_INTENT.equals(intent.getName())) {
- return true;
- }
- }
- }
- return false;
- }
-
- protected EndpointReference getWSATOEPR(WebServiceBinding binding) {
- EndpointReference epr = getEPR(binding);
- if (epr == null) {
- epr = getPortLocationEPR(binding);
- } else if (epr.getAddress() == null || epr.getAddress().length() < 1) {
- EndpointReference bindingEPR = getPortLocationEPR(binding);
- if (bindingEPR != null) {
- epr.setAddress(bindingEPR.getAddress());
- }
- }
- return epr;
- }
-
- protected EndpointReference getPortLocationEPR(WebServiceBinding binding) {
- String ep = binding.getURI();
- if (ep == null && binding.getPort() != null) {
- List<?> wsdlPortExtensions = binding.getPort().getExtensibilityElements();
- for (final Object extension : wsdlPortExtensions) {
- if (extension instanceof SOAPAddress) {
- ep = ((SOAPAddress)extension).getLocationURI();
- break;
- }
- }
- }
- return ep != null ? new EndpointReference(ep) : null;
- }
-
- protected org.apache.axis2.addressing.EndpointReference getEPR(WebServiceBinding wsBinding) {
- if (wsBinding.getEndPointReference() == null) {
- return null;
- }
- try {
-
- XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new DOMSource(wsBinding.getEndPointReference()));
- StAXOMBuilder builder = new StAXOMBuilder(parser);
- OMElement omElement = builder.getDocumentElement();
- org.apache.axis2.addressing.EndpointReference epr = EndpointReferenceHelper.fromOM(omElement);
- return epr;
-
- } catch (IOException e) {
- throw new RuntimeException(e);
- } catch (XMLStreamException e) {
- throw new RuntimeException(e);
- } catch (FactoryConfigurationError e) {
- throw new RuntimeException(e);
- }
- }
-
- protected String getSOAPAction(String operationName) {
- Binding binding = wsBinding.getBinding();
- if (binding != null) {
- for (Object o : binding.getBindingOperations()) {
- BindingOperation bop = (BindingOperation)o;
- if (bop.getName().equalsIgnoreCase(operationName)) {
- for (Object o2 : bop.getExtensibilityElements()) {
- if (o2 instanceof SOAPOperation) {
- return ((SOAPOperation)o2).getSoapActionURI();
- }
- }
- }
- }
- }
- return null;
- }
-
- private void configureSecurity(ConfigurationContext configContext) throws AxisFault {
- if ( wsBinding instanceof PolicySetAttachPoint ) {
- PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
- Parameter configParam = null;
- Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
- for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
- for ( Object policy : policySet.getPolicies() ) {
- if ( policy instanceof Axis2ConfigParamPolicy ) {
- axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
- for ( String paramName : axis2ConfigParamPolicy.getParamElements().keySet() ) {
- configParam = new Parameter(paramName,
- axis2ConfigParamPolicy.getParamElements().get(paramName).getFirstElement());
- configParam.setParameterElement(axis2ConfigParamPolicy.getParamElements().get(paramName));
- configContext.getAxisConfiguration().addParameter(configParam);
- }
- } else if ( policy instanceof Policy ) {
- Policy wsPolicy = (Policy)policy;
- configContext.getAxisConfiguration().applyPolicy(wsPolicy);
- }
- }
- }
- }
- }
-
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java
deleted file mode 100644
index 1684cc93dc..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInMessageReceiver.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.receivers.AbstractInMessageReceiver;
-import org.apache.tuscany.sca.interfacedef.Operation;
-
-public class Axis2ServiceInMessageReceiver extends AbstractInMessageReceiver {
-
- protected Operation operation;
-
- private Axis2ServiceProvider provider;
-
- public Axis2ServiceInMessageReceiver(Axis2ServiceProvider provider, Operation operation) {
- this.provider = provider;
- this.operation = operation;
- }
-
- public Axis2ServiceInMessageReceiver() {
- }
-
- @Override
- public void invokeBusinessLogic(MessageContext inMC) throws AxisFault {
- try {
- OMElement requestOM = inMC.getEnvelope().getBody().getFirstElement();
- Object[] args = new Object[] {requestOM};
- provider.invokeTarget(operation, args, inMC);
-
- } catch (InvocationTargetException e) {
- Throwable t = e.getCause();
- if (t instanceof Exception) {
- throw AxisFault.makeFault((Exception)t);
- }
- throw new RuntimeException(e);
- } catch (Exception e) {
- e.printStackTrace();
- throw AxisFault.makeFault(e);
- }
- }
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
deleted file mode 100644
index 11809e576a..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.util.FaultException;
-import org.osoa.sca.ServiceRuntimeException;
-
-public class Axis2ServiceInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver {
- private static final Logger logger = Logger.getLogger(Axis2ServiceInOutSyncMessageReceiver.class.getName());
-
- protected Operation operation;
-
- private Axis2ServiceProvider provider;
-
- public Axis2ServiceInOutSyncMessageReceiver(Axis2ServiceProvider provider, Operation operation) {
- this.provider = provider;
- this.operation = operation;
- }
-
- public Axis2ServiceInOutSyncMessageReceiver() {
- }
-
- @Override
- public void invokeBusinessLogic(MessageContext inMC, MessageContext outMC) throws AxisFault {
- try {
- OMElement requestOM = inMC.getEnvelope().getBody().getFirstElement();
- Object[] args = null;
-
- if (requestOM != null) {
- args = new Object[] {requestOM};
- }
- OMElement responseOM = (OMElement)provider.invokeTarget(operation, args, inMC);
-
- SOAPEnvelope soapEnvelope = getSOAPFactory(inMC).getDefaultEnvelope();
- if (null != responseOM ) {
- soapEnvelope.getBody().addChild(responseOM);
- }
- outMC.setEnvelope(soapEnvelope);
- outMC.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
-
- } catch (InvocationTargetException e) {
- Throwable t = e.getCause();
- if (t instanceof FaultException && ((FaultException)t).getFaultInfo() instanceof OMElement) {
- OMElement faultDetail = (OMElement)((FaultException)t).getFaultInfo();
- inMC.setProperty(Constants.FAULT_NAME, faultDetail.getQName().getLocalPart());
- AxisFault f = new AxisFault(null, e.getMessage(), "faultNode", "faultRole", faultDetail);
- throw f;
- }
- if (t instanceof Exception) {
- throw AxisFault.makeFault((Exception)t);
- }
- logger.log(Level.SEVERE, e.getMessage(), t);
- throw new ServiceRuntimeException(e);
- } catch (Throwable e) {
- logger.log(Level.SEVERE, e.getMessage(), e);
- throw AxisFault.makeFault(e);
- }
- }
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
deleted file mode 100644
index bc8f562467..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
+++ /dev/null
@@ -1,691 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.net.URL;
-import java.security.PrivilegedAction;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.extensions.soap.SOAPAddress;
-import javax.xml.namespace.QName;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.dom.DOMSource;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.transport.jms.JMSSender;
-import org.apache.axis2.transport.jms.JMSListener;
-import org.apache.axis2.transport.jms.JMSConstants;
-import org.apache.axis2.transport.jms.JMSUtils;
-import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.addressing.EndpointReferenceHelper;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.deployment.DeploymentErrorMsgs;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.ModuleBuilder;
-import org.apache.axis2.deployment.util.Utils;
-import org.apache.axis2.description.AxisEndpoint;
-import org.apache.axis2.description.AxisModule;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.TransportInDescription;
-import org.apache.axis2.description.TransportOutDescription;
-import org.apache.axis2.description.WSDL11ToAxisServiceBuilder;
-import org.apache.axis2.description.WSDL2Constants;
-import org.apache.axis2.description.WSDLToAxisServiceBuilder;
-import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.engine.MessageReceiver;
-import org.apache.axis2.engine.ListenerManager;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.neethi.Policy;
-import org.apache.tuscany.sca.assembly.AbstractContract;
-import org.apache.tuscany.sca.assembly.Binding;
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceClient.URIResolverImpl;
-import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
-import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.interfacedef.Interface;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.invocation.Message;
-import org.apache.tuscany.sca.invocation.MessageFactory;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
-import org.apache.tuscany.sca.policy.security.ws.Axis2ConfigParamPolicy;
-import org.apache.tuscany.sca.runtime.EndpointReference;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.runtime.RuntimeWire;
-
-public class Axis2ServiceProvider {
-
- private final static Logger logger = Logger.getLogger(Axis2ServiceProvider.class.getName());
-
- private AbstractContract contract;
- private WebServiceBinding wsBinding;
- private ServletHost servletHost;
- private MessageFactory messageFactory;
- private ConfigurationContext configContext;
- private JMSSender jmsSender;
- private JMSListener jmsListener;
-
- public static final QName QNAME_WSA_ADDRESS =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_ADDRESS);
- public static final QName QNAME_WSA_FROM =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_FROM);
- public static final QName QNAME_WSA_TO =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_TO);
-
- public static final QName QNAME_WSA_REFERENCE_PARAMETERS =
- new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_REFERENCE_PARAMETERS);
-
- // TODO: what to do about the base URI?
- // This port number may be used to construct callback URIs. The value 8085 is used
- // beacuse it matches the service port number used by the simple-callback-ws sample.
- private static final String BASE_HTTP_URI = "http://localhost:8085/";
- private static final String BASE_JMS_URI = "jms:";
-
- private static final String DEFAULT_QUEUE_CONNECTION_FACTORY = "TuscanyQueueConnectionFactory";
-
- private static final QName TRANSPORT_JMS_QUALIFIED_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","transport.jms");
-
- private PolicySet transportJmsPolicySet = null;
-
-
- public Axis2ServiceProvider(RuntimeComponent component,
- AbstractContract contract,
- WebServiceBinding wsBinding,
- ServletHost servletHost,
- MessageFactory messageFactory) {
-
- this.contract = contract;
- this.wsBinding = wsBinding;
- this.servletHost = servletHost;
- this.messageFactory = messageFactory;
-
-
- try {
- TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator();
- configContext = tuscanyAxisConfigurator.getConfigurationContext();
- //deployRampartModule();
- configureSecurity();
- } catch (AxisFault e) {
- throw new RuntimeException(e); // TODO: better exception
- } catch ( Exception e ) {
- throw new RuntimeException(e);
- }
-
- configContext.setContextRoot(servletHost.getContextPath());
-
- // pull out the binding intents to see what sort of transport is required
- transportJmsPolicySet = getPolicySet(TRANSPORT_JMS_QUALIFIED_INTENT);
-
- String uri;
-
- if (transportJmsPolicySet != null){
- uri = computeActualURI(BASE_JMS_URI, component, contract).normalize().toString();
-
- // construct the rest of the uri based on the policy. All the details are put
- // into the uri here rather than being place directly into the Axis configuration
- // as the Axis JMS sender relies on parsing the target URI
- Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
- for ( Object policy : transportJmsPolicySet.getPolicies() ) {
- if ( policy instanceof Axis2ConfigParamPolicy ) {
- axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
- Iterator paramIterator = axis2ConfigParamPolicy.getParamElements().get(DEFAULT_QUEUE_CONNECTION_FACTORY).getChildElements();
-
- if (paramIterator.hasNext()){
- StringBuffer uriParams = new StringBuffer("?");
-
- while (paramIterator.hasNext()){
- OMElement parameter = (OMElement)paramIterator.next();
- uriParams.append(parameter.getAttributeValue(new QName("","name")));
- uriParams.append("=");
- uriParams.append(parameter.getText());
-
- if (paramIterator.hasNext()){
- uriParams.append("&");
- }
- }
-
- uri = uri + uriParams;
- }
- }
- }
- } else {
- uri = computeActualURI(BASE_HTTP_URI, component, contract).normalize().toString();
- }
-
- if (uri.endsWith("/")) {
- uri = uri.substring(0, uri.length() - 1);
- }
- wsBinding.setURI(uri);
- }
-
- private void engageModules() throws AxisFault {
- if ( wsBinding instanceof PolicySetAttachPoint ) {
- PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
- if ( policiedBinding.getPolicySets().size() > 0 ) {
- //TODO: need to verify if one of the policies are concerned with security
- AxisModule m = new AxisModule("rampart");
- m.setFileName(wsBinding.getClass().getClassLoader().getResource("rampart-1.2.mar"));
- configContext.getAxisConfiguration().addModule(m);
- configContext.getAxisConfiguration().engageModule(m, configContext.getAxisConfiguration());
- }
- }
- }
-
- public void start() {
-
- // TODO: if <binding.ws> specifies the wsdl service then should create a
- // service for every port
-
- try {
- AxisService axisService = createAxisService();
- configContext.getAxisConfiguration().addService( axisService );
-
- if ( axisService.getEndpointURL().startsWith( "http" ) ) {
- Axis2ServiceServlet servlet = new Axis2ServiceServlet();
- servlet.init(configContext);
- String servletURI = wsBinding.getURI();
- configContext.setContextRoot(servletURI);
- servletHost.addServletMapping(servletURI, servlet);
- } else if ( axisService.getEndpointURL().startsWith( "jms" ) ) {
- logger.log(Level.INFO,"Axis2 JMS URL=" + axisService.getEndpointURL() );
-
- jmsListener = new JMSListener();
- jmsSender = new JMSSender();
- ListenerManager listenerManager = configContext.getListenerManager();
- TransportInDescription trsIn = configContext.getAxisConfiguration().getTransportIn(Constants.TRANSPORT_JMS);
-
- // get JMS transport parameters from the binding uri
- Map<String, String> jmsProps = JMSUtils.getProperties( wsBinding.getURI() );
-
- // collect the parameters used to configure the JMS transport
- OMFactory fac = OMAbstractFactory.getOMFactory();
- OMElement parms = fac.createOMElement(DEFAULT_QUEUE_CONNECTION_FACTORY, null);
-
- for ( String key : jmsProps.keySet() ) {
- OMElement param = fac.createOMElement("parameter", null);
- param.addAttribute( "name", key, null );
- param.addChild(fac.createOMText(param, jmsProps.get(key)));
- parms.addChild(param);
- }
-
- Parameter queueConnectionFactory = new Parameter(DEFAULT_QUEUE_CONNECTION_FACTORY, parms);
- trsIn.addParameter( queueConnectionFactory );
-
- trsIn.setReceiver(jmsListener);
-
- configContext.getAxisConfiguration().addTransportIn( trsIn );
- TransportOutDescription trsOut = configContext.getAxisConfiguration().getTransportOut(Constants.TRANSPORT_JMS);
- //configContext.getAxisConfiguration().addTransportOut( trsOut );
- trsOut.setSender(jmsSender);
-
- if (listenerManager == null) {
- listenerManager = new ListenerManager();
- listenerManager.init(configContext);
- }
- listenerManager.addListener(trsIn, true);
- jmsSender.init(configContext, trsOut);
- jmsListener.init(configContext, trsIn);
- jmsListener.start();
- }
- } catch (AxisFault e) {
- throw new RuntimeException(e);
- }
- }
-
- public void stop() {
- if ( jmsListener != null ) {
- jmsListener.stop();
- jmsListener.destroy();
- }
- else {
- servletHost.removeServletMapping(wsBinding.getURI());
- }
-
- if ( jmsSender != null )
- jmsSender.stop();
-
- try {
- configContext.getAxisConfiguration().removeService(wsBinding.getURI());
- }
- catch (AxisFault e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Compute the endpoint URI based on section 2.1.1 of the WS binding spec 1.
- * The URIs in the endpoint(s) of the referenced WSDL, which may be relative
- * 2. The URI specified by the wsa:Address element of the
- * wsa:EndpointReference, which may be relative 3. The explicitly stated URI
- * in the "uri" attribute of the binding.ws element, which may be relative,
- * 4. The implicit URI as defined by in section 1.7 in the SCA Assembly spec
- * If the <binding.ws> has no wsdlElement but does have a uri attribute then
- * the uri takes precidence over any implicitly used WSDL.
- *
- * @param baseURI
- */
- protected URI computeActualURI(String baseURI, RuntimeComponent component, AbstractContract contract) {
-
- org.apache.axis2.addressing.EndpointReference epr = null;
- URI eprURI = null;
- if (wsBinding.getEndPointReference() != null) {
- epr = getEPR();
- if (epr.getAddress() != null) {
- eprURI = URI.create(epr.getAddress());
- }
- }
-
- URI wsdlURI = null;
- if (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null) {
- // <binding.ws> explicitly points at a wsdl port, may be a relative URI
- wsdlURI = getEndpoint(wsBinding.getPort());
- }
-
- // if the wsdl port/endpoint has an absolute URI use that
- if (wsdlURI != null && wsdlURI.isAbsolute()) {
- if (wsBinding.getURI() != null) {
-// TODO: throw new IllegalArgumentException("Cannot specify binding URI when wsdl has aboslute URI");
- }
- return URI.create(wsdlURI.toString());
- }
-
- // if the wsa:EndpointReference has an address element with an absolute URI use that
- if (eprURI != null && eprURI.isAbsolute()) {
- //FIXME Throwing an exception breaks as wsBinding.getURI() will return the default URI
- // derived from the service name or the URI actually configured in the .composite
-// if (wsBinding.getURI() != null) {
-// throw new IllegalArgumentException("Cannot specify binding URI when wsa:EndpointReference has aboslute address URI");
-// }
- return URI.create(eprURI.toString());
- }
-
- // either there is no wsdl port endpoint URI or that URI is relative
-
- URI completeURI;
- if (wsBinding.getURI() != null) {
- completeURI = URI.create(wsBinding.getURI());
- if (!completeURI.isAbsolute()) {
- completeURI = URI.create(baseURI + "/" + wsBinding.getURI());
- }
- } else {
- completeURI = URI.create(baseURI + "/" + wsBinding.getName());
- }
-
- if (eprURI != null) {
- // there is a relative URI in the binding EPR
- completeURI = URI.create(completeURI + "/" + eprURI);
- }
-
- if (wsdlURI != null) {
- // there is a relative URI in the wsdl port
- completeURI = URI.create(completeURI + "/" + wsdlURI);
- }
-
- return completeURI;
-
- }
-
- private org.apache.axis2.addressing.EndpointReference getEPR() {
- try {
-
- XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new DOMSource(wsBinding.getEndPointReference()));
- StAXOMBuilder builder = new StAXOMBuilder(parser);
- OMElement omElement = builder.getDocumentElement();
- org.apache.axis2.addressing.EndpointReference epr = EndpointReferenceHelper.fromOM(omElement);
- return epr;
-
- } catch (IOException e) {
- throw new RuntimeException(e);
- } catch (XMLStreamException e) {
- throw new RuntimeException(e);
- } catch (FactoryConfigurationError e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Returns the endpoint of a given port.
- */
- protected URI getEndpoint(Port wsdlPort) {
- if (wsdlPort != null) {
- List<?> wsdlPortExtensions = wsdlPort.getExtensibilityElements();
- for (Object extension : wsdlPortExtensions) {
- if (extension instanceof SOAPAddress) {
- return URI.create(((SOAPAddress)extension).getLocationURI());
- }
- }
- }
- return null;
- }
-
- private AxisService createAxisService() throws AxisFault {
- AxisService axisService;
- if (wsBinding.getWSDLDefinition() != null) {
- axisService = createWSDLAxisService();
- } else {
- axisService = createJavaAxisService();
- }
- initAxisOperations(axisService);
- return axisService;
- }
-
- /**
- * Create an AxisService from the interface class from the SCA service interface
- */
- protected AxisService createJavaAxisService() throws AxisFault {
- AxisService axisService = new AxisService();
- String path = URI.create(wsBinding.getURI()).getPath();
- axisService.setName(path);
- axisService.setServiceDescription("Tuscany configured AxisService for service: " + wsBinding.getURI());
- axisService.setClientSide(false);
- Parameter classParam =
- new Parameter(Constants.SERVICE_CLASS, ((JavaInterface)contract.getInterfaceContract().getInterface())
- .getJavaClass().getName());
- axisService.addParameter(classParam);
- try {
- Utils.fillAxisService(axisService, configContext.getAxisConfiguration(), null, null);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return axisService;
- }
-
- /**
- * Create an AxisService from the WSDL doc used by ws binding
- */
- protected AxisService createWSDLAxisService() throws AxisFault {
- Definition definition = wsBinding.getWSDLDefinition().getDefinition();
-
- // WSDLToAxisServiceBuilder only uses the service and port to find the wsdl4J Binding
- // An SCA service with binding.ws does not require a service or port so we may not have
- // these but ...
-
- Axis2ServiceClient.setServiceAndPort(wsBinding);
- QName serviceQName = wsBinding.getServiceName();
- String portName = wsBinding.getPortName();
-
- WSDLToAxisServiceBuilder builder = new WSDL11ToAxisServiceBuilder(definition, serviceQName, portName);
- builder.setServerSide(true);
- // [rfeng] Add a custom resolver to work around WSCOMMONS-228
- builder.setCustomResolver(new URIResolverImpl(definition));
- builder.setBaseUri(definition.getDocumentBaseURI());
- // [rfeng]
- AxisService axisService = builder.populateService();
-
- String path = URI.create(wsBinding.getURI()).getPath();
- String name = ( path.startsWith( "/") ? path.substring(1) : path );
- axisService.setName(name);
- String endpointURL = wsBinding.getURI();
- axisService.setEndpointURL(endpointURL );
- axisService.setDocumentation("Tuscany configured AxisService for service: " + wsBinding.getURI());
- for ( Iterator i = axisService.getEndpoints().values().iterator(); i.hasNext(); ) {
- AxisEndpoint ae = (AxisEndpoint)i.next();
- if (endpointURL.startsWith("jms") ) {
- Parameter qcf = new Parameter(JMSConstants.CONFAC_PARAM, null);
- qcf.setValue(DEFAULT_QUEUE_CONNECTION_FACTORY);
- axisService.addParameter(qcf);
- break;
- }
- }
- // Use the existing WSDL
- Parameter wsdlParam = new Parameter(WSDLConstants.WSDL_4_J_DEFINITION, null);
- wsdlParam.setValue(definition);
- axisService.addParameter(wsdlParam);
- Parameter userWSDL = new Parameter("useOriginalwsdl", "true");
- axisService.addParameter(userWSDL);
-
- return axisService;
- }
-
- protected void initAxisOperations(AxisService axisService) {
- for (Iterator<?> i = axisService.getOperations(); i.hasNext();) {
- AxisOperation axisOp = (AxisOperation)i.next();
- Operation op = getOperation(axisOp);
- if (op != null) {
-
- if (op.isNonBlocking()) {
- axisOp.setMessageExchangePattern(WSDL2Constants.MEP_URI_IN_ONLY);
- } else {
- axisOp.setMessageExchangePattern(WSDL2Constants.MEP_URI_IN_OUT);
- }
-
- MessageReceiver msgrec = null;
- if (op.isNonBlocking()) {
- msgrec = new Axis2ServiceInMessageReceiver(this, op);
- } else {
- msgrec = new Axis2ServiceInOutSyncMessageReceiver(this, op);
- }
- axisOp.setMessageReceiver(msgrec);
- }
- }
- }
-
- protected Operation getOperation(AxisOperation axisOp) {
- String operationName = axisOp.getName().getLocalPart();
- Interface iface = wsBinding.getBindingInterfaceContract().getInterface();
- for (Operation op : iface.getOperations()) {
- if (op.getName().equalsIgnoreCase(operationName)) {
- return op;
- }
- }
- return null;
- }
-
- // methods for Axis2 message receivers
-
- public Object invokeTarget(Operation op, Object[] args, MessageContext inMC) throws InvocationTargetException {
-
- String callbackAddress = null;
- String callbackID = null;
- Object conversationID = null;
-
- //FIXME: can we use the Axis2 addressing support for this?
- SOAPHeader header = inMC.getEnvelope().getHeader();
- if (header != null) {
- OMElement to = header.getFirstChildWithName(QNAME_WSA_TO);
- if (to != null) {
- OMElement params = to.getFirstChildWithName(QNAME_WSA_REFERENCE_PARAMETERS);
- if (params != null) {
- OMElement convIDElement =
- params.getFirstChildWithName(Axis2BindingInvoker.CONVERSATION_ID_REFPARM_QN);
- if (convIDElement != null) {
- if (isConversational()) {
- conversationID = convIDElement.getText();
- }
- }
- OMElement callbackAddrElement =
- params.getFirstChildWithName(Axis2BindingInvoker.CALLBACK_REFERENCE_REFPARM_QN);
- if (callbackAddrElement != null) {
- if (contract.getInterfaceContract().getCallbackInterface() != null) {
- callbackAddress = callbackAddrElement.getText();
- }
- }
- OMElement callbackIDElement =
- params.getFirstChildWithName(Axis2BindingInvoker.CALLBACK_ID_REFPARM_QN);
- if (callbackIDElement != null) {
- if (contract.getInterfaceContract().getCallbackInterface() != null) {
- callbackID = callbackIDElement.getText();
- }
- }
- }
- }
- }
-
- // create a message object and set the args as its body
- Message msg = messageFactory.createMessage();
- msg.setBody(args);
- msg.setOperation( op );
-
- // if reference parameters are needed, create a new "To" EPR to hold them
- EndpointReference to = null;
- if (callbackAddress != null ||
- callbackID != null ||
- conversationID != null) {
- to = new EndpointReferenceImpl(null);
- msg.setTo(to);
- }
-
- // set the reference parameters into the "To" EPR
- if (callbackAddress != null) {
- to.getReferenceParameters().setCallbackReference(new EndpointReferenceImpl(callbackAddress));
- }
- if (callbackID != null) {
- to.getReferenceParameters().setCallbackID(callbackID);
- }
- if (conversationID != null) {
- to.getReferenceParameters().setConversationID(conversationID);
- }
-
- // find the runtime wire and invoke it with the message
- RuntimeWire wire = ((RuntimeComponentService)contract).getRuntimeWire(getBinding());
- return wire.invoke(op, msg);
- }
-
- public boolean isConversational() {
- return wsBinding.getBindingInterfaceContract().getInterface().isConversational();
- }
-
- /**
- * Return the binding for this provider as a primitive binding type
- * For use when looking up wires registered against the binding.
- *
- * @return the binding
- */
- protected Binding getBinding() {
- return wsBinding;
- }
-
- private PolicySet getPolicySet(QName intentName){
- PolicySet returnPolicySet = null;
-
- if ( wsBinding instanceof PolicySetAttachPoint ) {
- PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
- for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
- for (Intent intent : policySet.getProvidedIntents()){
- if ( intent.getName().equals(intentName) ){
- returnPolicySet = policySet;
- break;
- }
- }
- }
- }
-
- return returnPolicySet;
- }
-
- private void configureSecurity() throws AxisFault {
- if ( wsBinding instanceof PolicySetAttachPoint ) {
- PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding;
- Parameter configParam = null;
- Axis2ConfigParamPolicy axis2ConfigParamPolicy = null;
- for ( PolicySet policySet : policiedBinding.getPolicySets() ) {
- for ( Object policy : policySet.getPolicies() ) {
- if ( policy instanceof Axis2ConfigParamPolicy ) {
- axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy;
- for ( String paramName : axis2ConfigParamPolicy.getParamElements().keySet() ) {
- configParam = new Parameter(paramName,
- axis2ConfigParamPolicy.getParamElements().get(paramName).getFirstElement());
- configParam.setParameterElement(axis2ConfigParamPolicy.getParamElements().get(paramName));
- configContext.getAxisConfiguration().addParameter(configParam);
- }
- } else if ( policy instanceof Policy ) {
- Policy wsPolicy = (Policy)policy;
- configContext.getAxisConfiguration().applyPolicy(wsPolicy);
- }
- }
- }
- }
- }
-
- private void deployRampartModule() throws DeploymentException, AxisFault {
- ClassLoader tccl = (ClassLoader) org.apache.axis2.java.security.AccessController
- .doPrivileged(new PrivilegedAction() {
- public Object run() {
- return Thread.currentThread().getContextClassLoader();
- }
- });
-
-
- AxisModule module = new AxisModule();
- module.setParent(configContext.getAxisConfiguration());
- String moduleName = "rampart-1.2";
- URL moduleurl = TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/rampart-1.2.mar");
- module.setName(moduleName);
- ClassLoader deploymentClassloader = Utils.createClassLoader(new URL[]{moduleurl},
- tccl,
- true,
- (File)configContext.getAxisConfiguration().getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR));
-
- module.setModuleClassLoader(deploymentClassloader);
- populateModule(module, moduleurl,configContext.getAxisConfiguration());
- module.setFileName(moduleurl);
- TuscanyAxisConfigurator.addNewModule(module, configContext.getAxisConfiguration());
- org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
- configContext.getAxisConfiguration().getModules(), configContext.getAxisConfiguration());
- }
-
- private void populateModule(AxisModule module, URL moduleUrl, AxisConfiguration axisConfig) throws DeploymentException {
- try {
- ClassLoader classLoadere = module.getModuleClassLoader();
- InputStream moduleStream = classLoadere.getResourceAsStream("META-INF/module.xml");
- if (moduleStream == null) {
- moduleStream = classLoadere.getResourceAsStream("meta-inf/module.xml");
- }
- if (moduleStream == null) {
- throw new DeploymentException(
- Messages.getMessage(
- DeploymentErrorMsgs.MODULE_XML_MISSING, moduleUrl.toString()));
- }
- ModuleBuilder moduleBuilder = new ModuleBuilder(moduleStream, module, axisConfig);
- moduleBuilder.populateModule();
- } catch (IOException e) {
- throw new DeploymentException(e);
- }
- }
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceServlet.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceServlet.java
deleted file mode 100644
index c9ad95f5b9..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceServlet.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.SocketException;
-import java.net.URI;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Set;
-import java.util.Vector;
-
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.transport.http.AxisServlet;
-import org.apache.axis2.transport.http.ListingAgent;
-import org.apache.axis2.transport.http.server.HttpUtils;
-
-/**
- * This overrides the servlet init of the AxisServlet so Tuscany can use
- * a single Axis2 ConfigurationContext instance shared between AxisServlet
- * instances for each SCA service with a ws binding.
- * TODO: need to review if thats really what we want to be doing
- */
-public class Axis2ServiceServlet extends AxisServlet {
-
- protected TuscanyListingAgent agent;
-
- private static final long serialVersionUID = 1L;
- private static final ServletConfig DUMMY_CONFIG = createDummyServletConfig();
-
-//JIRA TUSCANY-1561 Port to Axis2 1.3
- private ConfigurationContext tmpconfigContext;
-
- public void init(ConfigurationContext configContext) {
- this.tmpconfigContext = configContext;
- try {
- super.init(DUMMY_CONFIG);
- } catch (ServletException e) {
- throw new RuntimeException(e);
- }
- agent = new TuscanyListingAgent(configContext);
- }
-
- /**
- * Override Axis2 servlet method to avoid loop when init
- * is called after servletConfig already initialized by
- * this classes init(ConfigurationContext) method.
- */
- @Override
- public void init() throws ServletException {
- }
-
- public void init(ServletConfig config) throws ServletException {
- ServletContext servletContext = config.getServletContext();
- servletContext.setAttribute(CONFIGURATION_CONTEXT, tmpconfigContext);
- super.init(config);
- }
-
- /**
- * We've setup the Servlet by passing in a ConfigurationContext on our init method
- * override this method to just return that
- */
- @Override
- protected ConfigurationContext initConfigContext(ServletConfig config) throws ServletException {
- return this.tmpconfigContext;
- }
-
- @Override
- public ServletConfig getServletConfig() {
- return DUMMY_CONFIG;
- }
-
- @Override
- public String getServletName() {
- return "TuscanyAxis2Servlet";
- }
-
- /**
- * The AxisServlet gets NPE during init without a ServletConfig so this is a mocked up one to prevent that.
- */
- private static ServletConfig createDummyServletConfig() {
- ServletConfig sc = new ServletConfig() {
-
- public String getServletName() {
- return "TuscanyAxis2DummyServlet";
- }
-
- public ServletContext getServletContext() {
- return new ServletContext() {
-
- public ServletContext getContext(String uripath) {
- return null;
- }
-
- @SuppressWarnings("unused") // it's on the servlet 2.5 api so we need it
- public String getContextPath() {
- return null;
- }
-
- public int getMajorVersion() {
- return 0;
- }
-
- public int getMinorVersion() {
- return 0;
- }
-
- public String getMimeType(String file) {
- return null;
- }
-
- public Set<?> getResourcePaths(String path) {
- return Collections.emptySet();
- }
-
- public URL getResource(String path) throws MalformedURLException {
- if("/".equals(path)) {
- // HACK: To avoid NPE
- return new URL("/axis2");
- }
- return null;
- }
-
- public InputStream getResourceAsStream(String path) {
- return null;
- }
-
- public RequestDispatcher getRequestDispatcher(String path) {
- return null;
- }
-
- public RequestDispatcher getNamedDispatcher(String arg0) {
- return null;
- }
-
- public Servlet getServlet(String arg0) throws ServletException {
- return null;
- }
-
- public Enumeration getServlets() {
- return null;
- }
-
- public Enumeration getServletNames() {
- return null;
- }
-
- public void log(String arg0) {
- }
-
- public void log(Exception arg0, String arg1) {
- }
-
- public void log(String arg0, Throwable arg1) {
- }
-
- public String getRealPath(String arg0) {
- return null;
- }
-
- public String getServerInfo() {
- return null;
- }
-
- public String getInitParameter(String arg0) {
- return null;
- }
-
- public Enumeration getInitParameterNames() {
- return null;
- }
-
- public Object getAttribute(String arg0) {
- return null;
- }
-
- public Enumeration getAttributeNames() {
- return null;
- }
-
- public void setAttribute(String arg0, Object arg1) {
- }
-
- public void removeAttribute(String arg0) {
- }
-
- public String getServletContextName() {
- return null;
- }
- };
- }
-
- public String getInitParameter(String arg0) {
- return null;
- }
-
- public Enumeration getInitParameterNames() {
- return new Vector().elements();
- }
- };
- return sc;
- }
-
- @Override
- public void destroy() {
- try {
- super.destroy();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Override the AxisServlet doGet to use the TuscanyListingAgent for ?wsdl
- */
- @Override
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
-
- initContextRoot(request);
-
- String query = request.getQueryString();
- if ((query != null) && (query.indexOf("wsdl2") >= 0 ||
- query.indexOf("wsdl") >= 0 || query.indexOf("xsd") >= 0 ||
- query.indexOf("policy") >= 0)) {
- agent.processListService(request, response);
- } else {
- super.doGet(request, response);
- }
- }
-
- /**
-
- /**
- * Override the AxisServlet method so as to not add "/services" into the url
- * and to work with Tuscany service names. can go once moved to Axis2 1.3
- */
- @Override
- public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
- //RUNNING_PORT
- String port = (String) configContext.getProperty(ListingAgent.RUNNING_PORT);
- if (port == null) {
- port = "8080";
- }
- if (ip == null) {
- try {
- ip = HttpUtils.getIpAddress();
- if (ip == null) {
- ip = "localhost";
- }
- } catch (SocketException e) {
-//TUSCANY-1561 Port to Axis2 1.3
-// throw new AxisFault.(e);
- throw AxisFault.makeFault(e);
- }
- }
-
- String contextPath = configContext.getServiceContextPath();
-
- URI epURI = URI.create("http://" + ip + ":" + port + "/" + contextPath + "/" + serviceName).normalize();
-
- return new EndpointReference[]{new EndpointReference(epURI.toString())};
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
deleted file mode 100644
index bab20f9494..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Java2WSDLHelper.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-import javax.wsdl.Binding;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.BindingOutput;
-import javax.wsdl.Definition;
-import javax.wsdl.Input;
-import javax.wsdl.Message;
-import javax.wsdl.OperationType;
-import javax.wsdl.Output;
-import javax.wsdl.Part;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import javax.wsdl.Types;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.UnknownExtensibilityElement;
-import javax.wsdl.extensions.schema.Schema;
-import javax.wsdl.xml.WSDLLocator;
-import javax.wsdl.xml.WSDLReader;
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.interfacedef.DataType;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.DefaultWSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
-import org.apache.tuscany.sca.interfacedef.wsdl.XSDefinition;
-import org.apache.tuscany.sca.interfacedef.wsdl.impl.InvalidWSDLException;
-import org.apache.tuscany.sca.interfacedef.wsdl.impl.WSDLOperationIntrospectorImpl;
-import org.apache.tuscany.sca.interfacedef.wsdl.xml.WSDLModelResolver;
-import org.apache.tuscany.sca.interfacedef.wsdl.xml.XMLDocumentHelper;
-import org.apache.tuscany.sca.policy.Intent;
-import org.apache.tuscany.sca.policy.IntentAttachPoint;
-import org.apache.ws.commons.schema.XmlSchema;
-import org.apache.ws.commons.schema.XmlSchemaCollection;
-import org.apache.ws.java2wsdl.Java2WSDLBuilder;
-import org.osoa.sca.annotations.OneWay;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
-
-/**
- * Utility methods to create WSDL objects from Java interfaces
- */
-public class Java2WSDLHelper {
-
- /**
- * Create a WSDLInterfaceContract from a JavaInterfaceContract
- */
- public static WSDLInterfaceContract createWSDLInterfaceContract(JavaInterfaceContract contract,
- WebServiceBinding wsBinding) {
- JavaInterface iface = (JavaInterface)contract.getInterface();
- Definition def = Java2WSDLHelper.createDefinition(iface.getJavaClass(), wsBinding);
-
- DefaultWSDLFactory wsdlFactory = new DefaultWSDLFactory();
-
- WSDLInterfaceContract wsdlContract = wsdlFactory.createWSDLInterfaceContract();
- WSDLInterface wsdlInterface = wsdlFactory.createWSDLInterface();
-
- wsdlContract.setInterface(wsdlInterface);
- WSDLDefinition wsdlDefinition = new DefaultWSDLFactory().createWSDLDefinition();
- wsdlDefinition.setDefinition(def);
- wsdlInterface.setWsdlDefinition(wsdlDefinition);
- wsdlInterface.setRemotable(true);
- wsdlInterface.setConversational(contract.getInterface().isConversational());
- wsdlInterface.setUnresolved(false);
- wsdlInterface.setRemotable(true);
- PortType portType = (PortType)def.getAllPortTypes().values().iterator().next();
- wsdlInterface.setPortType(portType);
-
- readInlineSchemas(wsdlFactory, wsdlDefinition, def, new XmlSchemaCollection());
-
- try {
- for (Operation op : iface.getOperations()) {
- javax.wsdl.Operation wsdlOp = portType.getOperation(op.getName(), null, null);
- WSDLOperationIntrospectorImpl opx =
- new WSDLOperationIntrospectorImpl(wsdlFactory, wsdlOp, wsdlDefinition, null, null);
-
- Operation clonedOp = (Operation)op.clone();
- clonedOp.setDataBinding(null);
-
- if (clonedOp.getInputType().getLogical().isEmpty()) {
- // null args case needs a single input type for the wrapper
- clonedOp.setInputType(opx.getInputType());
- }
- for (DataType<?> dt : clonedOp.getInputType().getLogical()) {
- dt.setDataBinding(null);
- }
-
- if (clonedOp.getOutputType() != null) {
- clonedOp.getOutputType().setDataBinding(null);
- }
- for (DataType<?> dt : clonedOp.getFaultTypes()) {
- dt.setDataBinding(null);
- }
- clonedOp.setWrapperStyle(true);
- clonedOp.setWrapper(opx.getWrapper().getWrapperInfo());
-
- wsdlInterface.getOperations().add(clonedOp);
- }
- } catch (CloneNotSupportedException e) {
- throw new RuntimeException(e);
- } catch (InvalidWSDLException e) {
- throw new RuntimeException(e);
- }
-
- return wsdlContract;
- }
-
- private static Document promote(Element element) {
- Document doc = (Document)element.getOwnerDocument().cloneNode(false);
- Element schema = (Element)doc.importNode(element, true);
- doc.appendChild(schema);
- Node parent = element.getParentNode();
- while (parent instanceof Element) {
- Element root = (Element)parent;
- NamedNodeMap nodeMap = root.getAttributes();
- for (int i = 0; i < nodeMap.getLength(); i++) {
- Attr attr = (Attr)nodeMap.item(i);
- String name = attr.getName();
- if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
- if (schema.getAttributeNode(name) == null) {
- schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
- }
- }
- }
- parent = parent.getParentNode();
- }
- doc.setDocumentURI(element.getOwnerDocument().getDocumentURI());
- return doc;
- }
-
- /**
- * Populate the inline schemas including those from the imported definitions
- *
- * @param definition
- * @param schemaCollection
- */
- private static void readInlineSchemas(WSDLFactory wsdlFactory,
- WSDLDefinition wsdlDefinition,
- Definition definition,
- XmlSchemaCollection schemaCollection) {
- Types types = definition.getTypes();
- if (types != null) {
- int index = 0;
- for (Object ext : types.getExtensibilityElements()) {
- ExtensibilityElement extElement = (ExtensibilityElement)ext;
- Element element = null;
- if (WSDLModelResolver.XSD_QNAME_LIST.contains(extElement.getElementType())) {
- if (extElement instanceof Schema) {
- element = ((Schema)extElement).getElement();
- } else if (extElement instanceof UnknownExtensibilityElement) {
- element = ((UnknownExtensibilityElement)extElement).getElement();
- }
- }
- if (element != null) {
- Document doc = promote(element);
- XSDefinition xsDefinition = wsdlFactory.createXSDefinition();
- xsDefinition.setUnresolved(true);
- xsDefinition.setNamespace(element.getAttribute("targetNamespace"));
- xsDefinition.setDocument(doc);
- xsDefinition.setLocation(URI.create(doc.getDocumentURI() + "#" + index));
- loadXSD(schemaCollection, xsDefinition);
- wsdlDefinition.getXmlSchemas().add(xsDefinition);
- index++;
- }
- }
- }
- for (Object imports : definition.getImports().values()) {
- List impList = (List)imports;
- for (Object i : impList) {
- javax.wsdl.Import anImport = (javax.wsdl.Import)i;
- // Read inline schemas
- if (anImport.getDefinition() != null) {
- readInlineSchemas(wsdlFactory, wsdlDefinition, anImport.getDefinition(), schemaCollection);
- }
- }
- }
- }
-
- private static void loadXSD(XmlSchemaCollection schemaCollection, XSDefinition definition) {
- if (definition.getSchema() != null) {
- return;
- }
- if (definition.getDocument() != null) {
- String uri = null;
- if (definition.getLocation() != null) {
- uri = definition.getLocation().toString();
- }
- XmlSchema schema = schemaCollection.read(definition.getDocument(), uri, null);
- definition.setSchemaCollection(schemaCollection);
- definition.setSchema(schema);
- }
- }
-
- /**
- * Create a WSDL4J Definition object from a Java interface
- */
- protected static Definition createDefinition(Class<?> javaInterface, WebServiceBinding wsBinding) {
-
- String className = javaInterface.getName();
- ClassLoader cl = javaInterface.getClassLoader();
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- Java2WSDLBuilder builder = new Java2WSDLBuilder(os, className, cl);
-
- try {
- builder.generateWSDL();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- try {
-
- WSDLReader reader = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader();
- reader.setFeature("javax.wsdl.verbose", false);
- reader.setFeature("javax.wsdl.importDocuments", true);
-
- WSDLLocatorImpl locator = new WSDLLocatorImpl(new ByteArrayInputStream(os.toByteArray()));
- Definition definition = reader.readWSDL(locator);
-
- processSOAPVersion(definition, wsBinding);
- processNoArgAndVoidReturnMethods(definition, javaInterface);
-
- return definition;
-
- } catch (WSDLException e) {
- throw new RuntimeException(e);
- }
- }
-
- private static void processSOAPVersion(Definition definition, WebServiceBinding wsBinding) {
- if (requiresSOAP12(wsBinding)) {
- removePort(definition, "SOAP11port_http");
- } else {
- removePort(definition, "SOAP12port_http");
- }
- }
-
- private static void removePort(Definition definition, String portNameSuffix) {
- Service service = (Service)definition.getServices().values().iterator().next();
- Map<?, ?> ports = service.getPorts();
- for (Object o : ports.keySet()) {
- if (((String)o).endsWith(portNameSuffix)) {
- Port p = (Port)ports.remove(o);
- definition.removeBinding(p.getBinding().getQName());
- break;
- }
- }
- }
-
- private static final QName SOAP12_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0", "soap12");
-
- private static boolean requiresSOAP12(WebServiceBinding wsBinding) {
- if (wsBinding instanceof IntentAttachPoint) {
- List<Intent> intents = ((IntentAttachPoint)wsBinding).getRequiredIntents();
- for (Intent intent : intents) {
- if (SOAP12_INTENT.equals(intent.getName())) {
- return true;
- }
- }
- }
- return false;
- }
-
- private static void processNoArgAndVoidReturnMethods(Definition definition, Class javaInterface) {
- String namespaceURI = definition.getTargetNamespace();
- String prefix = definition.getPrefix(namespaceURI);
- String xsPrefix = definition.getPrefix("http://www.w3.org/2001/XMLSchema");
- PortType portType = (PortType)definition.getAllPortTypes().values().iterator().next();
-
- Element schema = null;
- Document document = null;
- Types types = definition.getTypes();
- if (types != null) {
- for (Object ext : types.getExtensibilityElements()) {
- if (ext instanceof Schema) {
- Element element = ((Schema)ext).getElement();
- if (element.getAttribute("targetNamespace").equals(namespaceURI)) {
- schema = element;
- document = schema.getOwnerDocument();
- break;
- }
- }
- }
- }
- if (document == null) {
- return;
- }
-
- // look at each operation in the port type to see if it needs fixing up
- for (Object oper : portType.getOperations()) {
- javax.wsdl.Operation operation = (javax.wsdl.Operation)oper;
- String opName = operation.getName();
-
- // if input message has no parts, add one containing an empty wrapper
- Input input = operation.getInput();
- if (input != null) {
- Message inputMsg = input.getMessage();
- if (inputMsg.getParts().isEmpty()) {
- // create wrapper element and add it to the schema DOM
- Element wrapper =
- document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
- wrapper.setAttribute("name", opName);
- schema.appendChild(wrapper);
- Element complexType =
- document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
- wrapper.appendChild(complexType);
-
- // create new part for the wrapper and add it to the message
- Part part = definition.createPart();
- part.setName("parameters");
- part.setElementName(new QName(namespaceURI, opName, prefix));
- inputMsg.addPart(part);
- }
- }
-
- // if two-way operation has no output message, add one containing an empty wrapper
- if (input != null && operation.getOutput() == null) {
- boolean isOneWay = false;
- Method[] methods = javaInterface.getMethods();
- for (Method method : methods) {
- if (method.getName().equals(opName) && method.getAnnotation(OneWay.class) != null) {
- isOneWay = true;
- }
- }
- if (!isOneWay) {
- // create wrapper element and add it to the schema DOM
- String msgName = opName + "Response";
- Element wrapper =
- document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":element");
- wrapper.setAttribute("name", msgName);
- schema.appendChild(wrapper);
- Element complexType =
- document.createElementNS("http://www.w3.org/2001/XMLSchema", xsPrefix + ":complexType");
- wrapper.appendChild(complexType);
-
- // create new part for the wrapper
- Part part = definition.createPart();
- part.setName("parameters");
- part.setElementName(new QName(namespaceURI, msgName, prefix));
-
- // create new message for the part
- Message outputMsg = definition.createMessage();
- outputMsg.setQName(new QName(namespaceURI, msgName, prefix));
- outputMsg.addPart(part);
- outputMsg.setUndefined(false);
- definition.addMessage(outputMsg);
-
- // create output element for the operation
- Output output = definition.createOutput();
- output.setMessage(outputMsg);
- output.setExtensionAttribute(new QName("http://www.w3.org/2006/05/addressing/wsdl", "Action"),
- new QName("urn:" + msgName));
- operation.setOutput(output);
- operation.setStyle(OperationType.REQUEST_RESPONSE);
-
- // add binding output element to bindings for this port type
- for (Object bindObj : definition.getAllBindings().values()) {
- Binding binding = (Binding)bindObj;
- if (binding.getPortType().equals(portType)) {
- BindingOperation op = binding.getBindingOperation(opName, null, null);
- if (op != null && op.getBindingInput() != null && op.getBindingOutput() == null) {
- BindingOutput bindingOut = definition.createBindingOutput();
- for (Object extObj : op.getBindingInput().getExtensibilityElements()) {
- bindingOut.addExtensibilityElement((ExtensibilityElement)extObj);
- }
- op.setBindingOutput(bindingOut);
- }
- }
- }
- }
- }
- }
-
- }
-
-}
-
-class WSDLLocatorImpl implements WSDLLocator {
- private InputStream inputStream;
- private String base = "http://";
- private String latestImportURI;
-
- public WSDLLocatorImpl(InputStream is) {
- this.inputStream = is;
- }
-
- public void close() {
- try {
- inputStream.close();
- } catch (IOException e) {
- // Ignore
- }
- }
-
- public InputSource getBaseInputSource() {
- try {
- return XMLDocumentHelper.getInputSource(new URL(base), inputStream);
- } catch (IOException e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- public String getBaseURI() {
- return base;
- }
-
- public InputSource getImportInputSource(String parentLocation, String importLocation) {
- return null;
- }
-
- public String getLatestImportURI() {
- return latestImportURI;
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyAxisConfigurator.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyAxisConfigurator.java
deleted file mode 100755
index ed2d862722..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyAxisConfigurator.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.deployment.DeploymentConstants;
-import org.apache.axis2.deployment.DeploymentErrorMsgs;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.ModuleBuilder;
-import org.apache.axis2.deployment.URLBasedAxisConfigurator;
-import org.apache.axis2.deployment.util.Utils;
-import org.apache.axis2.description.AxisModule;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.engine.AxisConfigurator;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.util.Loader;
-
-/**
- * Helps configure Axis2 from a resource in binding.ws.axis2 instead of Axis2.xml
- * <p/> TODO: Review: should there be a single global Axis ConfigurationContext
- */
-public class TuscanyAxisConfigurator extends URLBasedAxisConfigurator implements AxisConfigurator {
-
- /* these two fields are part of a temporary fix to solve problems that maven has with including
- * rampart-1.3.mar into the classpath and also at the time of Release 1.0 rampart-1.3.mar seems
- * to pull in a SNAPSHOT version of rampart-project pom. Hence rampart.mar has been excluded
- * as a maven dependency and has been packed with this module
- */
- /************start of fix *********************************************************************/
- private URL axis2_xml =
- TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/axis2.xml");
- private URL axis2_repository = null;
- private URL rampart_mar_url =
- TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/modules/rampart-1.3.mar");
- /************** end of fix *************************************************************/
-
- public TuscanyAxisConfigurator() throws AxisFault {
- //super(TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/axis2.xml"),
- // TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/modules/rampart.mar"));
- super(TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/axis2.xml"),
- null);
- }
-
- public ConfigurationContext getConfigurationContext() throws AxisFault {
- if (configContext == null) {
- configContext = ConfigurationContextFactory.createConfigurationContext(this);
- }
- return configContext;
- }
-
- /* these three methods are part of a temporary fix to solve problems that maven has with including
- * rampart-1.3.mar into the classpath and also at the time of Release 1.0 rampart-1.3.mar seems
- * to pull in a SNAPSHOT version of rampart-project pom. Hence rampart.mar has been excluded
- * as a maven dependency and has been packed with this module
- */
- /************start of fix *********************************************************************/
- public AxisConfiguration getAxisConfiguration() throws AxisFault {
- InputStream axis2xmlStream;
- try {
- if (axis2_xml == null) {
- axis2xmlStream =
- Loader.getResourceAsStream(DeploymentConstants.AXIS2_CONFIGURATION_RESOURCE);
- } else {
- axis2xmlStream = axis2_xml.openStream();
- }
- axisConfig = populateAxisConfiguration(axis2xmlStream);
- if (axis2_repository == null) {
- Parameter axis2repoPara = axisConfig.getParameter(DeploymentConstants.AXIS2_REPO);
- if (axis2repoPara != null) {
- String repoValue = (String) axis2repoPara.getValue();
- if (repoValue != null && !"".equals(repoValue.trim())) {
- if (repoValue.startsWith("file:/")) {
- // we treat this case specially , by assuming file is
- // located in the local machine
- loadRepository(repoValue);
- } else {
- loadRepositoryFromURL(new URL(repoValue));
- }
- }
- } else {
- //log.info("No repository found , module will be loaded from classpath");
- try {
- loadFromClassPath();
- } catch ( Exception e ) {
- loadRampartModule();
- }
- }
-
- } else {
- loadRepositoryFromURL(axis2_repository);
- }
-
- } catch (IOException e) {
- throw new AxisFault(e.getMessage());
- }
- axisConfig.setConfigurator(this);
- return axisConfig;
- }
-
- public void loadRampartModule() throws DeploymentException {
- try {
- ClassLoader deploymentClassLoader =
- Utils.createClassLoader(
- new URL[]{rampart_mar_url},
- axisConfig.getModuleClassLoader(),
- true,
- (File) axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR));
- AxisModule module = new AxisModule();
- module.setModuleClassLoader(deploymentClassLoader);
- module.setParent(axisConfig);
- //String moduleFile = fileUrl.substring(0, fileUrl.indexOf(".mar"));
- if (module.getName() == null) {
- module.setName(org.apache.axis2.util.Utils.getModuleName("rampart-1.3"));
- module.setVersion(org.apache.axis2.util.Utils.getModuleVersion("rampart-1.3"));
- }
- populateModule(module, rampart_mar_url);
- module.setFileName(rampart_mar_url);
- addNewModule(module, axisConfig);
- org.apache.axis2.util.Utils.
- calculateDefaultModuleVersion(axisConfig.getModules(), axisConfig);
- axisConfig.validateSystemPredefinedPhases();
- } catch (IOException e) {
- throw new DeploymentException(e);
- }
- }
-
- private void populateModule(AxisModule module, URL moduleUrl) throws DeploymentException {
- try {
- ClassLoader classLoader = module.getModuleClassLoader();
- InputStream moduleStream = classLoader.getResourceAsStream("META-INF/module.xml");
- if (moduleStream == null) {
- moduleStream = classLoader.getResourceAsStream("meta-inf/module.xml");
- }
- if (moduleStream == null) {
- throw new DeploymentException(
- Messages.getMessage(
- DeploymentErrorMsgs.MODULE_XML_MISSING, moduleUrl.toString()));
- }
- ModuleBuilder moduleBuilder = new ModuleBuilder(moduleStream, module, axisConfig);
- moduleBuilder.populateModule();
- } catch (IOException e) {
- throw new DeploymentException(e);
- }
- }
-
- /************** end of fix *************************************************************/
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyDispatcher.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyDispatcher.java
deleted file mode 100644
index c761c7481e..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyDispatcher.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.net.URI;
-import java.util.HashMap;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.HandlerDescription;
-import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.engine.RequestURIBasedDispatcher;
-import org.apache.axis2.util.JavaUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * A Tuscany specific Axis2 Dispatcher that enables using services
- * exposed at the SCA defined service URI instead of /services/<serviceName>
- */
-public class TuscanyDispatcher extends RequestURIBasedDispatcher {
-
- public static final String NAME = "TuscanyDispatcher";
- private static final Log log = LogFactory.getLog(RequestURIBasedDispatcher.class);
- private static final boolean isDebugEnabled = log.isDebugEnabled();
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.axis2.engine.AbstractDispatcher#findService(org.apache.axis2.context.MessageContext)
- */
- @Override
- public AxisService findService(MessageContext messageContext) throws AxisFault {
- EndpointReference toEPR = messageContext.getTo();
-
- if (toEPR != null) {
- if(isDebugEnabled){
- log.debug("Checking for Service using target endpoint address : " + toEPR.getAddress());
- }
-
- String path = URI.create(toEPR.getAddress()).getPath();
-
- ConfigurationContext configurationContext = messageContext.getConfigurationContext();
- AxisConfiguration registry = configurationContext.getAxisConfiguration();
-
- String serviceName = findAxisServiceName(registry, path);
- return registry.getService(serviceName);
-
- } else {
- if(isDebugEnabled){
- log.debug("Attempted to check for Service using null target endpoint URI");
- }
- return null;
- }
- }
-
- @Override
- public void initDispatcher() {
- init(new HandlerDescription(NAME));
- }
-
- protected String findAxisServiceName(AxisConfiguration registry, String path) {
- HashMap services = registry.getServices();
- if (services == null) {
- return null;
- }
- String[] parts = JavaUtils.split(path, '/');
- String serviceName = "";
- for (int i=parts.length-1; i>=0; i--) {
- serviceName = parts[i] + serviceName;
- if (services.containsKey(serviceName)) {
- return serviceName;
- }
- serviceName = "/" + serviceName;
- if (services.containsKey(serviceName)) {
- return serviceName;
- }
- }
-
- return null;
- }
-
-}
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyListingAgent.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyListingAgent.java
deleted file mode 100644
index 8ff52413e1..0000000000
--- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/TuscanyListingAgent.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * 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.tuscany.sca.binding.ws.axis2;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.Service;
-import javax.wsdl.extensions.soap.SOAPAddress;
-import javax.wsdl.extensions.soap12.SOAP12Address;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.axiom.attachments.utils.IOUtils;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.deployment.DeploymentConstants;
-import org.apache.axis2.description.AxisDescription;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.PolicyInclude;
-import org.apache.axis2.transport.http.ListingAgent;
-import org.apache.axis2.util.ExternalPolicySerializer;
-import org.apache.axis2.util.JavaUtils;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.neethi.Policy;
-import org.apache.neethi.PolicyRegistry;
-import org.apache.ws.commons.schema.XmlSchema;
-
-/**
- * A Tuscany specific Axis2 ListingAgent as the Axis2 one does not work
- * with the Tuscany sevice names which include slash ('/') characters.
- * Unfortunately it ends up having to copy a fair amount of Axis2 code to do this.
- */
-public class TuscanyListingAgent extends ListingAgent {
-
- private static final String LIST_SINGLE_SERVICE_JSP_NAME =
- "listSingleService.jsp";
-
- public TuscanyListingAgent(ConfigurationContext aConfigContext) {
- super(aConfigContext);
- }
-
- protected String findAxisServiceName(String path) {
- HashMap services = configContext.getAxisConfiguration().getServices();
- if (services == null) {
- return null;
- }
- String[] parts = JavaUtils.split(path, '/');
- String serviceName = "";
- for (int i=parts.length-1; i>=0; i--) {
- serviceName = parts[i] + serviceName;
- if (services.containsKey(serviceName)) {
- return serviceName;
- }
- serviceName = "/" + serviceName;
- if (services.containsKey(serviceName)) {
- return serviceName;
- }
- }
-
- return null;
- }
-
- @Override
- public void processListService(HttpServletRequest req,
- HttpServletResponse res)
- throws IOException, ServletException {
-
-
- String filePart = req.getRequestURL().toString();
-// String serviceName = filePart.substring(filePart.lastIndexOf("/") + 1,
-// filePart.length());
-// Change the Axis2 code so as to use the complete ServletPath as the service name
-// this line is the only change to to Axis2 code
-
- String serviceName = findAxisServiceName(filePart);
- setContextRoot(filePart, serviceName);
-
- String query = req.getQueryString();
- int wsdl2 = query.indexOf("wsdl2");
- int wsdl = query.indexOf("wsdl");
- int xsd = query.indexOf("xsd");
- int policy = query.indexOf("policy");
-
- HashMap services = configContext.getAxisConfiguration().getServices();
- if ((services != null) && !services.isEmpty()) {
- Object serviceObj = services.get(serviceName);
- if (serviceObj != null) {
- boolean isHttp = "http".equals(req.getScheme());
- if (wsdl2 >= 0) {
- OutputStream out = res.getOutputStream();
- res.setContentType("text/xml");
- String ip = extractHostAndPort(filePart, isHttp);
-// JIRA TUSCANY-1561 Port to Axis2 1.3
-// ((AxisService) serviceObj).printWSDL2(out, ip, configContext.getServiceContextPath());
- ((AxisService) serviceObj).printWSDL2(out, ip);
- out.flush();
- out.close();
- return;
- } else if (wsdl >= 0) {
- OutputStream out = res.getOutputStream();
- res.setContentType("text/xml");
- String ip = extractHostAndPort(filePart, isHttp);
- patchSOAP12Port((AxisService)serviceObj);
-// JIRA TUSCANY-1561 Port to Axis2 1.3
-// ((AxisService) serviceObj).printWSDL(out, ip, configContext.getServicePath());
- ((AxisService) serviceObj).printWSDL(out, ip);
- out.flush();
- out.close();
- return;
- } else if (xsd >= 0) {
- OutputStream out = res.getOutputStream();
- res.setContentType("text/xml");
- AxisService axisService = (AxisService) serviceObj;
- //call the populator
- axisService.populateSchemaMappings();
- Map schemaMappingtable =
- axisService.getSchemaMappingTable();
- ArrayList schemas = axisService.getSchema();
-
- //a name is present - try to pump the requested schema
- String xsds = req.getParameter("xsd");
- if (!"".equals(xsds)) {
- XmlSchema schema =
- (XmlSchema) schemaMappingtable.get(xsds);
- if (schema != null) {
- //schema is there - pump it outs
- schema.write(new OutputStreamWriter(out, "UTF8"));
- out.flush();
- out.close();
- } else {
- InputStream in = axisService.getClassLoader()
- .getResourceAsStream(DeploymentConstants.META_INF + "/" + xsds);
- if (in != null) {
- out.write(IOUtils.getStreamAsByteArray(in));
- out.flush();
- out.close();
- } else {
- res.sendError(HttpServletResponse.SC_NOT_FOUND);
- }
- }
-
- //multiple schemas are present and the user specified
- //no name - in this case we cannot possibly pump a schema
- //so redirect to the service root
- } else if (schemas.size() > 1) {
- res.sendRedirect("");
- //user specified no name and there is only one schema
- //so pump that out
- } else {
- XmlSchema schema = axisService.getSchema(0);
- if (schema != null) {
- schema.write(new OutputStreamWriter(out, "UTF8"));
- out.flush();
- out.close();
- }
- }
- return;
- } else if (policy >= 0) {
-
- OutputStream out = res.getOutputStream();
-
- ExternalPolicySerializer serializer = new ExternalPolicySerializer();
- serializer.setAssertionsToFilter(configContext
- .getAxisConfiguration().getLocalPolicyAssertions());
-
- // check whether Id is set
- String idParam = req.getParameter("id");
-
- if (idParam != null) {
- // Id is set
-
- Policy targetPolicy = findPolicy(idParam, (AxisService) serviceObj);
-
- if (targetPolicy != null) {
- XMLStreamWriter writer;
-
- try {
- writer = XMLOutputFactory.newInstance()
- .createXMLStreamWriter(out);
-
- res.setContentType("text/xml");
- targetPolicy.serialize(writer);
- writer.flush();
-
- } catch (XMLStreamException e) {
- throw new ServletException(
- "Error occured when serializing the Policy",
- e);
-
- } catch (FactoryConfigurationError e) {
- throw new ServletException(
- "Error occured when serializing the Policy",
- e);
- }
-
- } else {
-
- res.setContentType("text/html");
- String outStr = "<b>No policy found for id="
- + idParam + "</b>";
- out.write(outStr.getBytes());
- }
-
- } else {
-
- PolicyInclude policyInclude = ((AxisService) serviceObj).getPolicyInclude();
- Policy effecPolicy = policyInclude.getEffectivePolicy();
-
- if (effecPolicy != null) {
- XMLStreamWriter writer;
-
- try {
- writer = XMLOutputFactory.newInstance()
- .createXMLStreamWriter(out);
-
- res.setContentType("text/xml");
- effecPolicy.serialize(writer);
- writer.flush();
-
- } catch (XMLStreamException e) {
- throw new ServletException(
- "Error occured when serializing the Policy",
- e);
-
- } catch (FactoryConfigurationError e) {
- throw new ServletException(
- "Error occured when serializing the Policy",
- e);
- }
- } else {
-
- res.setContentType("text/html");
- String outStr = "<b>No effective policy for "
- + serviceName + " servcie</b>";
- out.write(outStr.getBytes());
- }
- }
-
- return;
- } else {
- req.getSession().setAttribute(Constants.SINGLE_SERVICE,
- serviceObj);
- }
- } else {
- req.getSession().setAttribute(Constants.SINGLE_SERVICE, null);
- }
- }
-
- renderView(LIST_SINGLE_SERVICE_JSP_NAME, req, res);
- }
-
- /**
- * Hack for Tuscany to get ?wsdl working with Tuscany service names
- * Can go once moved up to Axis2 1.3
- */
- private void setContextRoot(String filePart, String serviceName) {
- String contextRoot = configContext.getContextRoot();
- if (contextRoot != null && contextRoot.length() > 0) {
- if (contextRoot.equals("/")) {
- configContext.setServicePath("/");
- } else {
- int i = filePart.indexOf(contextRoot) + contextRoot.length();
- int j = filePart.lastIndexOf(serviceName);
- if (i==j) {
- configContext.setServicePath("/");
- } else {
- String mapping = filePart.substring(i+1, j);
- configContext.setServicePath(mapping);
- }
- }
- configContext.setContextRoot(contextRoot);
- }
- }
-
- private String extractHostAndPort(String filePart, boolean isHttp) {
- int ipindex = filePart.indexOf("//");
- String ip = null;
- if (ipindex >= 0) {
- ip = filePart.substring(ipindex + 2, filePart.length());
- int seperatorIndex = ip.indexOf(":");
- int slashIndex = ip.indexOf("/");
- String port;
- if (seperatorIndex >= 0) {
- port = ip.substring(seperatorIndex + 1, slashIndex);
- ip = ip.substring(0, seperatorIndex);
- } else {
- ip = ip.substring(0, slashIndex);
- port = "80";
- }
- if (isHttp) {
- configContext.setProperty(RUNNING_PORT, port);
- }
- }
- return ip;
- }
-
- private Policy findPolicy(String id, AxisDescription des) {
-
- List policyElements = des.getPolicyInclude().getPolicyElements();
- PolicyRegistry registry = des.getPolicyInclude().getPolicyRegistry();
-
- Object policyComponent;
-
- Policy policy = registry.lookup(id);
-
- if (policy != null) {
- return policy;
- }
-
- for (Iterator iterator = policyElements.iterator(); iterator.hasNext();) {
- policyComponent = iterator.next();
-
- if (policyComponent instanceof Policy) {
- // policy found for the id
-
- if (id.equals(((Policy) policyComponent).getId())) {
- return (Policy) policyComponent;
- }
- }
- }
-
- AxisDescription child;
-
- for (Iterator iterator = des.getChildren(); iterator.hasNext();) {
- child = (AxisDescription) iterator.next();
- policy = findPolicy(id, child);
-
- if (policy != null) {
- return policy;
- }
- }
-
- return null;
- }
-
- /**
- * Hack to get ?wsdl working with soap 1.2
- * Fixed in Axis2 1.3
- */
- private void patchSOAP12Port(AxisService as) throws AxisFault {
- Parameter wsld4jdefinition = as.getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
- Definition definition = (Definition) wsld4jdefinition.getValue();
- setPortAddress(definition, null, as);
- }
-
- /**
- * This is a copy of the AxisService setPortAddress patched to work with SOAP 1.2 Addresses
- * Fixed in Axis2 1.3
- */
- private void setPortAddress(Definition definition, String requestIP, AxisService axisService) throws AxisFault {
- Iterator serviceItr = definition.getServices().values().iterator();
- while (serviceItr.hasNext()) {
- Service serviceElement = (Service) serviceItr.next();
- Iterator portItr = serviceElement.getPorts().values().iterator();
- while (portItr.hasNext()) {
- Port port = (Port) portItr.next();
- List list = port.getExtensibilityElements();
- for (int i = 0; i < list.size(); i++) {
- Object extensibilityEle = list.get(i);
- String locationURI = null;
- if (requestIP == null) {
- locationURI = axisService.getEPRs()[0];
- } else {
-// can't do this as the method's not visible, but Tuscany doesn't use this path anyway
-// locationURI = axisService.getEPRs(requestIP)[0]);
- }
- if (extensibilityEle instanceof SOAPAddress) {
- ((SOAPAddress) extensibilityEle).setLocationURI(locationURI);
- } else if (extensibilityEle instanceof SOAP12Address) {
- ((SOAP12Address) extensibilityEle).setLocationURI(locationURI);
- }
- }
- }
- }
- }
-
-}