summaryrefslogtreecommitdiffstats
path: root/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler')
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java143
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceTargetInvoker.java110
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java177
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java480
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceOperationMetaData.java484
-rw-r--r--tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java362
6 files changed, 0 insertions, 1756 deletions
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java
deleted file mode 100644
index 39bd26f72d..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceClient.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.binding.axis2.handler;
-
-import java.lang.reflect.Method;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.FactoryConfigurationError;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.client.Options;
-import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.MessageContextConstants;
-import org.apache.axis2.om.OMElement;
-import org.apache.tuscany.binding.axis2.assembly.WebServiceBinding;
-import org.apache.tuscany.binding.axis2.util.AxiomHelper;
-import org.apache.tuscany.model.assembly.ExternalService;
-import org.osoa.sca.ServiceRuntimeException;
-
-import commonj.sdo.helper.TypeHelper;
-
-/**
- * An ExternalWebServiceClient using Axis2
- */
-public class ExternalWebServiceClient {
-
- private ExternalService externalService;
- private TypeHelper typeHelper;
- private WebServicePortMetaData wsPortMetaData;
-
- /**
- * Constructs a new ExternalWebServiceClient.
- *
- * @param externalService
- * @param wsBinding
- */
- public ExternalWebServiceClient(ExternalService externalService, WebServiceBinding wsBinding, TypeHelper typeHelper) {
- this.externalService = externalService;
- this.typeHelper=typeHelper;
- this.wsPortMetaData = new WebServicePortMetaData(wsBinding.getWSDLDefinition(), wsBinding.getWSDLPort(), wsBinding.getURI(), false);
- }
-
- /**
- * Invoke an operation on the external Web service.
- *
- * @param method
- * @param args
- * @return
- */
- public Object invoke(Method method, Object[] args) {
-
- ServiceClient serviceClient;
- ClassLoader ccl=Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(ExternalWebServiceClient.class.getClassLoader());
-
- serviceClient = createServiceClient(method);
-
- } finally {
- Thread.currentThread().setContextClassLoader(ccl);
- }
-
- String typeName = method.getName();
- String typeNS = wsPortMetaData.getPortType().getQName().getNamespaceURI();
-
- OMElement requestOM = AxiomHelper.toOMElement(typeHelper, args, new QName(typeNS, typeName));
-
- OMElement responseOM;
- ccl=Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(ExternalWebServiceClient.class.getClassLoader());
-
- responseOM = serviceClient.sendReceive(requestOM);
-
- } catch (AxisFault e) {
- throw new ServiceRuntimeException(e);
- } finally {
- Thread.currentThread().setContextClassLoader(ccl);
- }
-
- Object[] os = AxiomHelper.toObjects(typeHelper, responseOM);
- Object response;
- if (os == null || os.length < 1) {
- response = null;
- } else {
- response = os[0];
- }
-
- return response;
- }
-
- private ServiceClient createServiceClient(Method method) throws FactoryConfigurationError {
-
- /*
- * TODO: Simlistic impl for now, needs to be redone. Should cache our ConfigurationContext and pass in on ServiceClient constructor, should
- * probably use WSDL configured Axis2 OperationClient
- */
-
- Options options = new Options();
-
- options.setProperty(Constants.Configuration.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
-
- WebServiceOperationMetaData operationMetaData = wsPortMetaData.getOperationMetaData(method.getName());
-
- EndpointReference targetEPR = new EndpointReference(wsPortMetaData.getEndpoint());
- options.setTo(targetEPR);
-
- String soapAction = operationMetaData.getSOAPAction();
- if (soapAction != null) {
- options.setSoapAction(soapAction);
- }
-
- // If use is encoded assume its an old style service and wont understand chunking
- if ("encoded".equals(operationMetaData.getUse())) {
- options.setProperty(MessageContextConstants.CHUNKED, Boolean.FALSE);
- }
-
- ServiceClient serviceClient;
- try {
- serviceClient = new ServiceClient();
- } catch (org.apache.axis2.AxisFault e) {
- throw new RuntimeException(e);
- }
-
- serviceClient.setOptions(options);
-
- return serviceClient;
- }
-
-}
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceTargetInvoker.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceTargetInvoker.java
deleted file mode 100644
index fcb2e2e944..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/ExternalWebServiceTargetInvoker.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.binding.axis2.handler;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.tuscany.core.context.ExternalServiceContext;
-import org.apache.tuscany.core.context.InstanceContext;
-import org.apache.tuscany.core.context.QualifiedName;
-import org.apache.tuscany.core.context.ScopeContext;
-import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.invocation.Interceptor;
-import org.apache.tuscany.core.invocation.TargetInvoker;
-import org.apache.tuscany.core.message.Message;
-
-/**
- * Responsible for invoking an external web service
- *
- * @version $Rev$ $Date$
- */
-public class ExternalWebServiceTargetInvoker implements TargetInvoker {
-
- private QualifiedName serviceName;
- private String esName;
- private Method method;
- private ScopeContext container;
-
- private ExternalServiceContext context;
-
- /**
- * Constructs a new ExternalWebServiceTargetInvoker.
- * @param esName
- * @param container
- */
- public ExternalWebServiceTargetInvoker(QualifiedName serviceName, Method method, ScopeContext container) {
- assert (serviceName != null) : "No service name specified";
- assert (method != null) : "No method specified";
- assert (container != null) : "No scope container specified";
- this.serviceName = serviceName;
- this.esName=serviceName.getPartName();
- this.method = method;
- this.container = container;
- }
-
- public Object invokeTarget(Object payload) throws InvocationTargetException {
- if (context == null) {
- InstanceContext iContext = container.getContext(esName);
- if (!(iContext instanceof ExternalServiceContext)) {
- TargetException te = new TargetException("Unexpected target context type");
- te.setIdentifier(iContext.getClass().getName());
- te.addContextName(iContext.getName());
- throw te;
- }
- context = (ExternalServiceContext) iContext;
- }
- ExternalWebServiceClient client = (ExternalWebServiceClient) context.getImplementationInstance(true);
- if (payload != null) {
- return client.invoke(method, (Object[])payload);
- } else {
- return client.invoke(method, null);
- }
- }
-
- public boolean isCacheable() {
- return false;
- }
-
- public Message invoke(Message msg) {
- try {
- Object resp = invokeTarget(msg.getBody());
- msg.setBody(resp);
- } catch (InvocationTargetException e) {
- msg.setBody(e.getCause());
- } catch (Throwable e) {
- msg.setBody(e);
- }
- return msg;
- }
-
- public void setNext(Interceptor next) {
- throw new UnsupportedOperationException();
- }
-
- public Object clone() {
- try {
- ExternalWebServiceTargetInvoker invoker = (ExternalWebServiceTargetInvoker) super.clone();
- invoker.container = container;
- invoker.context = this.context;
- invoker.esName = this.esName;
- invoker.method = this.method;
- invoker.serviceName = this.serviceName;
- return invoker;
- } catch (CloneNotSupportedException e) {
- return null; // will not happen
- }
- }
-
-}
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
deleted file mode 100644
index f0f49d5654..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.apache.tuscany.binding.axis2.handler;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.ListIterator;
-
-import javax.wsdl.Part;
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.OperationContext;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.engine.MessageReceiver;
-import org.apache.axis2.om.OMAbstractFactory;
-import org.apache.axis2.om.OMDocument;
-import org.apache.axis2.om.OMElement;
-import org.apache.axis2.om.OMFactory;
-import org.apache.axis2.om.OMNamespace;
-import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
-import org.apache.axis2.soap.SOAPBody;
-import org.apache.axis2.soap.SOAPEnvelope;
-import org.apache.axis2.soap.SOAPFactory;
-import org.apache.tuscany.binding.axis2.util.AxiomHelper;
-import org.apache.tuscany.core.context.AggregateContext;
-import org.apache.tuscany.core.context.EntryPointContext;
-import org.apache.tuscany.core.context.InstanceContext;
-import org.apache.tuscany.model.assembly.EntryPoint;
-import org.apache.tuscany.sdo.helper.TypeHelperImpl;
-import org.apache.tuscany.sdo.util.SDOUtil;
-import org.apache.wsdl.WSDLConstants;
-import org.eclipse.emf.common.util.UniqueEList;
-
-import commonj.sdo.DataObject;
-import commonj.sdo.Property;
-import commonj.sdo.Sequence;
-import commonj.sdo.Type;
-import commonj.sdo.helper.TypeHelper;
-
-public class WebServiceEntryPointInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver {
- // public static final String MEP_URL = "http://www.w3.org/2004/08/wsdl/tuscany/in-out";
- public static final String MEP_URL = WSDLConstants.MEP_URI_OUT_IN;
-
- protected final AggregateContext moduleContext;
-
- protected final EntryPoint entryPoint;
- protected final EntryPointContext entryPointContext;
-
- private final WebServicePortMetaData wsdlPortInfo;
-
- /**
- * Field log
- */
-
- /**
- * Constructor WebServiceEntryPointInOutSyncMessageReceiver
- *
- * @param entryPoint
- * @param moduleContext
- * @param context
- * @param wsdlPortInfo
- */
- public WebServiceEntryPointInOutSyncMessageReceiver(AggregateContext moduleContext, EntryPoint entryPoint, EntryPointContext context, WebServicePortMetaData wsdlPortInfo) {
- this.moduleContext = moduleContext;
- this.entryPoint = entryPoint;
- this.entryPointContext= context;
- this.wsdlPortInfo = wsdlPortInfo;
- }
-
- public void invokeBusinessLogic(MessageContext msgContext, MessageContext outMsgContext) throws AxisFault {
-
- ClassLoader ccl=Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(entryPoint.getAggregate().getAssemblyModelContext().getApplicationResourceLoader().getClassLoader());
-
- AxisOperation axisOperation = msgContext.getAxisOperation();
- String axisOperationName= axisOperation.getName().getLocalPart();
-
- TypeHelper typeHelper=entryPoint.getAggregate().getAssemblyModelContext().getTypeHelper();
-
- OMElement requestOM = msgContext.getEnvelope().getBody().getFirstElement();
- DataObject msgdo = AxiomHelper.toDataObject(typeHelper, requestOM);
- // Sequence parmSeq = msgdo.getSequence("mixed");
-
- requestOM = msgContext.getEnvelope().getBody().getFirstElement();
- Object[] args = AxiomHelper.toObjects(typeHelper, requestOM);
-
-
-
-
-// ArrayList parms = new ArrayList(parmSeq.size());
-// for (int i = 0; i < parmSeq.size(); ++i) {
-// Object parmDO = (Object) parmSeq.getValue(i);// parm element
-// if (parmDO instanceof DataObject) {
-//
-// Sequence nn = ((DataObject) parmDO).getSequence("mixed");
-//
-// for (int j = 0; j < nn.size(); j++) {
-//
-// Object valueDO = (Object) nn.getValue(j); // data array s
-// if (valueDO instanceof DataObject) {
-//
-// Sequence seqVal = ((DataObject) valueDO).getSequence("mixed");
-// Object seqDO = seqVal.getValue(0);
-// if (seqDO instanceof String) {
-// parms.add(seqDO);
-// } else {
-// parms.add(valueDO); // no sure if this is right?
-//
-// }
-// }
-// }
-// }
-// }
-// Object[] args= parms.toArray(new Object[parms.size()]);
- Class[] argsClazz= new Class[args.length];
- for(int i= args.length -1; i> -1; --i){
- argsClazz[i]= args[i].getClass();
-
- }
- Class clazz = entryPoint.getConfiguredService().getService().getServiceContract().getInterface();
- Method operationMethod= clazz.getMethod(axisOperationName, argsClazz);
-
-
- InvocationHandler handler = (InvocationHandler) entryPointContext.getImplementationInstance();
-
-
- Object response = handler.invoke(null, operationMethod, args);
-
-
- SOAPFactory fac = getSOAPFactory(msgContext);
- SOAPEnvelope soapenv = fac.getDefaultEnvelope();
- SOAPBody soapbody = soapenv.getBody();
- //new SDO way....
- QName responseTypeQN = getResponseTypeName(operationMethod.getName());
- OMElement responseOM = AxiomHelper.toOMElement(typeHelper, new Object[] {response}, responseTypeQN);
- soapbody.addChild(responseOM);
-
-
-
- //Endof new SDO way
-
-
-
-
-
- // se.addChild(sf.createText(response, true));
- outMsgContext.setEnvelope(soapenv);
- // outMsgContext.setAxisOperation(axisOperation);
- // outMsgContext.setAxisService(msgContext.getAxisService());
-
-
- } catch (Exception e) {
- e.printStackTrace();
- throw new AxisFault("Error creating DataObject from Soapenvelope. " + e.getClass() + " " + e.getMessage(), e);
-
- } catch (Throwable e) {
-
- e.printStackTrace();
- throw new AxisFault("Error creating DataObject from Soapenvelope. " + e.getClass() + " " + e.getMessage(), e);
- } finally {
- Thread.currentThread().setContextClassLoader(ccl);
- }
-
- }
- protected QName getResponseTypeName(String operationName) {
- WebServiceOperationMetaData op = wsdlPortInfo.getOperationMetaData(operationName);
- Part part = op.getOutputPart(0);
- QName elementName = part.getElementName();
- return elementName;
- }
-
-
-}
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java
deleted file mode 100644
index cfcac3acdd..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java
+++ /dev/null
@@ -1,480 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.binding.axis2.handler;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.wsdl.Definition;
-import javax.wsdl.Operation;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.xml.namespace.QName;
-
-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.context.MessageContext;
-import org.apache.axis2.context.SessionContext;
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.InOutAxisOperation;
-import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.transport.http.HTTPConstants;
-import org.apache.axis2.transport.http.HTTPTransportUtils;
-import org.apache.axis2.transport.http.ListingAgent;
-import org.apache.axis2.transport.http.ServletBasedOutTransportInfo;
-import org.apache.tuscany.binding.axis2.assembly.WebServiceBinding;
-import org.apache.tuscany.core.context.AggregateContext;
-import org.apache.tuscany.core.context.EntryPointContext;
-import org.apache.tuscany.core.context.InstanceContext;
-import org.apache.tuscany.core.runtime.RuntimeContext;
-import org.apache.tuscany.model.assembly.Binding;
-import org.apache.tuscany.model.assembly.Component;
-import org.apache.tuscany.model.assembly.EntryPoint;
-import org.apache.tuscany.model.assembly.Module;
-
-/**
- * Class AxisServlet
- */
-public class WebServiceEntryPointServlet
- extends HttpServlet
-{
-
- private static final long serialVersionUID = -2085869393709833372L;
-
- private static final String CONFIGURATION_CONTEXT = "CONFIGURATION_CONTEXT";
-
- public static final String SESSION_ID = "SessionId";
-
- private ConfigurationContext configContext;
-
- private AxisConfiguration axisConfiguration;
-
- private ListingAgent lister;
-
- private MessageContext createAndSetInitialParamsToMsgCtxt( Object sessionContext, MessageContext msgContext,
- HttpServletResponse httpServletResponse,
- HttpServletRequest httpServletRequest )
- throws AxisFault
- {
- msgContext = new MessageContext();
- msgContext.setConfigurationContext( configContext );
- msgContext.setSessionContext( (SessionContext) sessionContext );
- msgContext.setTransportIn( axisConfiguration.getTransportIn( new QName( Constants.TRANSPORT_HTTP ) ) );
- msgContext.setTransportOut( axisConfiguration.getTransportOut( new QName( Constants.TRANSPORT_HTTP ) ) );
-
- msgContext.setProperty( Constants.OUT_TRANSPORT_INFO, new ServletBasedOutTransportInfo( httpServletResponse ) );
- msgContext.setProperty( MessageContext.TRANSPORT_HEADERS, getTransportHeaders( httpServletRequest ) );
- msgContext.setProperty( SESSION_ID, httpServletRequest.getSession().getId() );
-
- return msgContext;
- }
-
- public void destroy()
- {
- super.destroy();
- }
-
- /**
- * Method doGet
- *
- * @param httpServletRequest
- * @param httpServletResponse
- * @throws ServletException
- * @throws IOException
- */
- protected void doGet( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse )
- throws ServletException, IOException
- {
- MessageContext msgContext = null;
- OutputStream out = null;
-
- try
- {
- Object sessionContext = getSessionContext( httpServletRequest );
- HashMap map = getHTTPParameters( httpServletRequest );
-
- msgContext = createAndSetInitialParamsToMsgCtxt( sessionContext, msgContext, httpServletResponse,
- httpServletRequest );
- msgContext.setDoingREST( true );
- msgContext.setServerSide( true );
- out = httpServletResponse.getOutputStream();
-
- boolean processed = HTTPTransportUtils.processHTTPGetRequest( msgContext, httpServletRequest
- .getInputStream(), out, httpServletRequest.getContentType(), httpServletRequest
- .getHeader( HTTPConstants.HEADER_SOAP_ACTION ), httpServletRequest.getRequestURL().toString(),
- configContext, map );
-
- if ( !processed )
- {
- lister.handle( httpServletRequest, httpServletResponse, out );
- }
- }
- catch ( AxisFault e )
- {
- if ( msgContext != null )
- {
- handleFault( msgContext, out, e );
- }
- else
- {
- throw new ServletException( e );
- }
- }
- catch ( Exception e )
- {
- throw new ServletException( e );
- }
- }
-
- /*
- * (non-Javadoc)
- * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
-
- /**
- * Method doPost
- *
- * @param req
- * @param res
- * @throws ServletException
- * @throws IOException
- */
- protected void doPost( HttpServletRequest req, HttpServletResponse res )
- throws ServletException, IOException
- {
- MessageContext msgContext = null;
- OutputStream out = null;
-
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- ClassLoader mycl = getClass().getClassLoader();
- try
- {
- if ( tccl != mycl )
- {
- Thread.currentThread().setContextClassLoader( mycl );
- }
- Object sessionContext = getSessionContext( req );
-
- msgContext = createAndSetInitialParamsToMsgCtxt( sessionContext, msgContext, res, req );
-
- // adding ServletContext into msgContext;
- msgContext.setProperty( Constants.SERVLET_CONTEXT, sessionContext );
- out = res.getOutputStream();
- HTTPTransportUtils.processHTTPPostRequest( msgContext, req.getInputStream(), out, req.getContentType(), req
- .getHeader( HTTPConstants.HEADER_SOAP_ACTION ), req.getRequestURL().toString() );
-
- Object contextWritten = msgContext.getOperationContext().getProperty( Constants.RESPONSE_WRITTEN );
-
- res.setContentType( "text/xml; charset=" + msgContext.getProperty( MessageContext.CHARACTER_SET_ENCODING ) );
-
- if ( ( contextWritten == null ) || !Constants.VALUE_TRUE.equals( contextWritten ) )
- {
- res.setStatus( HttpServletResponse.SC_ACCEPTED );
- }
- }
- catch ( AxisFault e )
- {
- if ( msgContext != null )
- {
- res.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
- handleFault( msgContext, out, e );
- }
- else
- {
- throw new ServletException( e );
- }
- }
- finally
- {
- if ( tccl != mycl )
- {
- Thread.currentThread().setContextClassLoader( tccl );
- }
- }
- }
-
- private void handleFault( MessageContext msgContext, OutputStream out, AxisFault e )
- throws AxisFault
- {
- msgContext.setProperty( MessageContext.TRANSPORT_OUT, out );
-
- AxisEngine engine = new AxisEngine( configContext );
- MessageContext faultContext = engine.createFaultMessageContext( msgContext, e );
-
- engine.sendFault( faultContext );
- }
-
- /**
- * Method init
- *
- * @param config
- * @throws ServletException
- */
- public void init( ServletConfig config )
- throws ServletException
- {
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- ClassLoader mycl = getClass().getClassLoader();
- try
- {
- if ( tccl != mycl )
- {
- Thread.currentThread().setContextClassLoader( mycl );
- }
- configContext = initConfigContext( config );
- initTuscany( configContext.getAxisConfiguration(), config );
- lister = new ListingAgent( configContext );
- axisConfiguration = configContext.getAxisConfiguration();
- config.getServletContext().setAttribute( CONFIGURATION_CONTEXT, configContext );
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- throw new ServletException( e );
- }
- finally
- {
- if ( tccl != mycl )
- {
- Thread.currentThread().setContextClassLoader( tccl );
- }
- }
- }
-
- RuntimeContext getTuscanyWebAppRuntime( ServletConfig config )
- {
-
- Object ret = (RuntimeContext) ( config ).getServletContext()
- .getAttribute( "org.apache.tuscany.core.runtime.RuntimeContext" );
- if ( !( ret instanceof RuntimeContext ) )
- {
- RuntimeException rete = new RuntimeException( "Tuscany configuration not found! "
- + ( ( ret == null ) ? "" : "unexpected class" + ret.getClass() ) );
- rete.printStackTrace();//pretty majar make sure something gets logged.
- throw rete;
-
- }
- return (RuntimeContext) ret;
- }
-
- void initTuscany( final AxisConfiguration axisConfig, ServletConfig config )
- throws AxisFault
- {
-
- // Register all the Web service entry points
- RuntimeContext tuscanyRuntime = getTuscanyWebAppRuntime( config );
-
- // Get the current SCA module context
-
- // AggregateContext moduleContext = (AggregateContext) tuscanyRuntime.getAggregate().getAssemblyModelContext();//getRootContext();//.getModuleComponentContext();
- try
- {
- tuscanyRuntime.start();
- AggregateContext moduleContext = tuscanyRuntime.getRootContext();
- Module rootModule = (Module) moduleContext.getAggregate();
-
- for ( Iterator m = rootModule.getComponents().iterator(); m.hasNext(); )
- {
- Module module = (Module) ( (Component) m.next() ).getComponentImplementation();
-
- for ( Iterator i = module.getEntryPoints().iterator(); i.hasNext(); )
- {
- EntryPoint entryPoint = (EntryPoint) i.next();
- final String epName = entryPoint.getName();
-
- ServletContext servletContext = config.getServletContext();
- AggregateContext moduleContext2 = (AggregateContext) servletContext
- .getAttribute( "org.apache.tuscany.core.webapp.ModuleComponentContext" );
- InstanceContext entryPointContext = moduleContext2.getContext( epName );
-
- Binding binding = (Binding) entryPoint.getBindings().get( 0 );
- if ( binding instanceof WebServiceBinding )
- {
-
- WebServiceBinding wsBinding = (WebServiceBinding) binding;
- Definition definition = wsBinding.getWSDLDefinition();
- Port port = wsBinding.getWSDLPort();
- QName qname = new QName( definition.getTargetNamespace(), port.getName() );
- if ( qname != null )
- {
-
- WebServicePortMetaData wsdlPortInfo = new WebServicePortMetaData( definition, port, null,
- false );
-
- WebServiceEntryPointInOutSyncMessageReceiver msgrec = new WebServiceEntryPointInOutSyncMessageReceiver(
- moduleContext,
- entryPoint,
- (EntryPointContext) entryPointContext,
- wsdlPortInfo );
-
- AxisServiceGroup serviceGroup = new AxisServiceGroup( axisConfig );
- axisConfig
- .addMessageReceiver( WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL, msgrec );
- serviceGroup.setServiceGroupName( wsdlPortInfo.getServiceName().getLocalPart() );
-
- // to create service from wsdl stream --->
- // AxisServiceBuilder axisServiceBuilder = new AxisServiceBuilder();
- // return axisServiceBuilder.getAxisService(in);
-
- AxisService axisService = new AxisService( epName );
- axisService.setParent( serviceGroup );
- axisService.setServiceDescription( "Tuscany configured service EntryPoint name '" + epName
- + "'" );
- // axisService.setTargetNamespace(wsdlPortInfo.getPortName().getNamespaceURI());
- axisService.addMessageReceiver( WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL,
- msgrec );
-
- // Create operation descriptions for all the operations
- PortType wsdlPortType = wsdlPortInfo.getPortType();
- for ( Iterator j = wsdlPortType.getOperations().iterator(); j.hasNext(); )
- {
- Operation wsdlOperation = (Operation) j.next();
- String operationName = wsdlOperation.getName();
- AxisOperation axisOp = new InOutAxisOperation( new javax.xml.namespace.QName( qname
- .getNamespaceURI(), operationName ) );
- axisOp.setMessageReceiver( msgrec );
- axisService.addOperation( axisOp );
- axisOp.setMessageExchangePattern( WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL );
-
- axisConfig.addService( axisService );
-
- }
- axisConfig.addServiceGroup( serviceGroup );
-
- }
-
- }
- }
- }
- }
- finally
- {
- // tuscanyRuntime.stop();
- }
- }
-
- /**
- * Initialize the Axis configuration context
- *
- * @param config Servlet configuration
- * @throws ServletException
- */
- protected ConfigurationContext initConfigContext( ServletConfig config )
- throws ServletException
- {
- try
- {
- ServletContext context = config.getServletContext();
- String repoDir = context.getRealPath( "/WEB-INF" );
- ConfigurationContextFactory erfac = new ConfigurationContextFactory();
- ConfigurationContext configContext = erfac.createConfigurationContextFromFileSystem( repoDir );
- configContext.setProperty( Constants.CONTAINER_MANAGED, Constants.VALUE_TRUE );
- configContext.setRootDir( new File( context.getRealPath( "/WEB-INF" ) ) );
- return configContext;
- }
- catch ( Exception e )
- {
- throw new ServletException( e );
- }
- }
-
- private HashMap getHTTPParameters( HttpServletRequest httpServletRequest )
- {
- HashMap map = new HashMap();
- Enumeration enu = httpServletRequest.getParameterNames();
-
- while ( enu.hasMoreElements() )
- {
- String name = (String) enu.nextElement();
- String value = httpServletRequest.getParameter( name );
-
- map.put( name, value );
- }
-
- return map;
- }
-
- private Object getSessionContext( HttpServletRequest httpServletRequest )
- {
- Object sessionContext = httpServletRequest.getSession( true ).getAttribute( Constants.SESSION_CONTEXT_PROPERTY );
-
- if ( sessionContext == null )
- {
- sessionContext = new SessionContext( null );
- httpServletRequest.getSession().setAttribute( Constants.SESSION_CONTEXT_PROPERTY, sessionContext );
- }
-
- return sessionContext;
- }
-
- private Map getTransportHeaders( HttpServletRequest req )
- {
- HashMap headerMap = new HashMap();
- Enumeration headerNames = req.getHeaderNames();
-
- while ( headerNames.hasMoreElements() )
- {
- String key = (String) headerNames.nextElement();
- String value = req.getHeader( key );
-
- headerMap.put( key, value );
- }
-
- return headerMap;
- }
- //RRFOO
- //TODO get axis2.xml in
- /*
- *
- // Get the current SCA module context
- AggregateContext moduleContext = tuscanyRuntime.getModuleComponentContext();
- tuscanyRuntime.start();
- try {
-
- Module module = (Module)moduleContext.getAggregate();
- AssemblyModelContext modelContext = module.getAssemblyModelContext();
-
- // Load the .wsdd configuration
- ResourceLoader bundleContext = modelContext.getResourceLoader();
- InputStream wsdd;
- try {
- URL url = bundleContext.getResource("org/apache/tuscany/binding/axis/engine/config/server-config.wsdd");
- wsdd = url.openStream();
- } catch (IOException e1) {
- throw new ServiceRuntimeException(e1);
- }
-
- *
- */
-}
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceOperationMetaData.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceOperationMetaData.java
deleted file mode 100644
index 04c05b95dd..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceOperationMetaData.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.binding.axis2.handler;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import javax.wsdl.Binding;
-import javax.wsdl.BindingInput;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.BindingOutput;
-import javax.wsdl.Input;
-import javax.wsdl.Message;
-import javax.wsdl.Operation;
-import javax.wsdl.Output;
-import javax.wsdl.Part;
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.wsdl.extensions.soap.SOAPHeader;
-import javax.wsdl.extensions.soap.SOAPOperation;
-import javax.xml.namespace.QName;
-
-/**
- * Metadata for a WSDL operation
- *
- */
-public class WebServiceOperationMetaData {
- // WSDL Binding and BindingOperation
- private Binding binding;
- private BindingOperation bindingOperation;
-
- // Fields to cache derived metadata
- private transient Set inputHeaderParts;
- private transient Set outputHeaderParts;
- private transient String style;
- private transient String use;
- private transient String soapAction;
- private transient List signature;
- private String encoding;
- private transient QName rpcOperationName;
-
- public WebServiceOperationMetaData(Binding binding, BindingOperation bindingOperation) {
- this.binding = binding;
- this.bindingOperation = bindingOperation;
- }
-
- public WebServiceOperationMetaData(Binding binding, BindingOperation bindingOperation, String style, String use, String encoding, String soapAction) {
- this.binding = binding;
- this.bindingOperation = bindingOperation;
- this.style = style;
- this.use = use;
- this.encoding = encoding;
- this.soapAction = soapAction;
- }
-
- public Set getInputHeaderParts() {
- if (inputHeaderParts == null) {
- // Build a set of header parts that we need to exclude
- inputHeaderParts = new HashSet();
- BindingInput bindingInput = bindingOperation.getBindingInput();
-
- if (bindingInput != null) {
- Operation operation = bindingOperation.getOperation();
- javax.wsdl.Message message = operation.getInput().getMessage();
- List elements = bindingInput.getExtensibilityElements();
- for (Iterator i = elements.iterator(); i.hasNext();) {
- Object extensibilityElement = i.next();
- Part part = getPartFromSOAPHeader(message, extensibilityElement);
- if (part != null) {
- inputHeaderParts.add(part);
- }
- }
- }
- }
- return inputHeaderParts;
- }
-
- public Set getOutputHeaderParts() {
- if (outputHeaderParts == null) {
- // Build a set of header parts that we need to exclude
- outputHeaderParts = new HashSet();
- BindingOutput bindingOutput = bindingOperation.getBindingOutput();
-
- if (bindingOutput != null) {
- Operation operation = bindingOperation.getOperation();
- javax.wsdl.Message message = operation.getOutput().getMessage();
- List elements = bindingOutput.getExtensibilityElements();
- for (Iterator i = elements.iterator(); i.hasNext();) {
- Object extensibilityElement = i.next();
- Part part = getPartFromSOAPHeader(message, extensibilityElement);
- if (part != null) {
- outputHeaderParts.add(part);
- }
- }
- }
- }
- return outputHeaderParts;
- }
-
- private Part getPartFromSOAPHeader(Message message, Object extensibilityElement) {
- Part part = null;
- if (extensibilityElement instanceof SOAPHeader) {
- SOAPHeader soapHeader = (SOAPHeader) extensibilityElement;
- QName msgName = soapHeader.getMessage();
- if (message.getQName().equals(msgName)) {
- part = message.getPart(soapHeader.getPart());
- }
- } else if (extensibilityElement instanceof SOAPHeader) {
- SOAPHeader soapHeader = (SOAPHeader) extensibilityElement;
- QName msgName = soapHeader.getMessage();
- if (message.getQName().equals(msgName)) {
- part = message.getPart(soapHeader.getPart());
- }
- }
- return part;
- }
-
- public String getStyle() {
- if (style == null) {
- SOAPOperation soapOperation = (SOAPOperation) WebServicePortMetaData.getExtensibilityElement(bindingOperation.getExtensibilityElements(), SOAPOperation.class);
- if (soapOperation != null)
- style = soapOperation.getStyle();
- if (style == null) {
- SOAPBinding soapBinding = (SOAPBinding) WebServicePortMetaData.getExtensibilityElement(binding.getExtensibilityElements(), SOAPBinding.class);
- if (soapBinding != null)
- style = soapBinding.getStyle();
- }
- if (style == null)
- style = "document";
- }
- return style;
- }
-
- /**
- * Returns the SOAP action for the given operation.
- *
- * @param wsdlBindingOperation
- * @return
- */
- public String getSOAPAction() {
- if (soapAction == null) {
- final List wsdlBindingOperationExtensions = bindingOperation.getExtensibilityElements();
- final SOAPOperation soapOp = (SOAPOperation) WebServicePortMetaData.getExtensibilityElement(wsdlBindingOperationExtensions, SOAPOperation.class);
- if (soapOp != null)
- soapAction = soapOp.getSoapActionURI();
- }
- return soapAction;
- }
-
- public QName getRPCOperationName() {
- if (rpcOperationName == null) {
- javax.wsdl.extensions.soap.SOAPBody soapBody = getSOAPBody(true);
- String ns = (soapBody != null) ? soapBody.getNamespaceURI() : binding.getPortType().getQName().getNamespaceURI();
- String name = bindingOperation.getOperation().getName();
- rpcOperationName = new QName(ns, name);
- }
- return rpcOperationName;
- }
-
- private List getSOAPBodyParts(boolean input) {
- javax.wsdl.extensions.soap.SOAPBody soapBody = getSOAPBody(input);
- if (soapBody != null) {
- List parts = soapBody.getParts();
- if (parts!=null) {
- List names = new ArrayList();
- for (Iterator i = parts.iterator(); i.hasNext();) {
- Object part = i.next();
- if (part instanceof String)
- names.add(part);
- else if (part instanceof Part) {
- names.add(((Part) part).getName());
- }
- }
- return names;
- } else
- return null;
- } else
- return null;
- }
-
- private javax.wsdl.extensions.soap.SOAPBody getSOAPBody(boolean input) {
- List elements = null;
- if (input) {
- BindingInput bindingInput = bindingOperation.getBindingInput();
- if (bindingInput == null)
- return null;
- elements = bindingInput.getExtensibilityElements();
- } else {
- BindingOutput bindingOutput = bindingOperation.getBindingOutput();
- if (bindingOutput == null)
- return null;
- elements = bindingOutput.getExtensibilityElements();
- }
- javax.wsdl.extensions.soap.SOAPBody soapBody = (javax.wsdl.extensions.soap.SOAPBody) WebServicePortMetaData.getExtensibilityElement(elements,
- javax.wsdl.extensions.soap.SOAPBody.class);
- return soapBody;
- }
-
- /**
- * Returns the use attribute
- *
- * @param wsdlOperation
- * @return
- */
- public String getUse() {
- if (use == null) {
- javax.wsdl.extensions.soap.SOAPBody soapBody = getSOAPBody(true);
- if (soapBody != null) {
- use = soapBody.getUse();
- }
- if (use == null)
- use = "literal";
- }
- return use;
- }
-
- public String getEncoding() {
- if (encoding == null) {
- javax.wsdl.extensions.soap.SOAPBody soapBody = getSOAPBody(true);
- if (soapBody != null) {
- List<String> styles=(List<String>)soapBody.getEncodingStyles();
- if (styles!=null && !styles.isEmpty())
- encoding = styles.get(0);
- }
- if (encoding == null)
- encoding = "";
- }
- return encoding;
- }
-
- public boolean isDocLitWrapped() {
- boolean flag = getStyle().equals("document") && getUse().equals("literal");
- if (!flag)
- return false;
- Message msg = getMessage(true);
- if (msg == null)
- return false;
- List parts = msg.getOrderedParts(null);
- if (parts.size() != 1)
- return false;
- Part part = (Part) parts.get(0);
- QName element = part.getElementName();
- if (element == null)
- return false;
- return element.getLocalPart().equals(bindingOperation.getOperation().getName());
- }
-
- /*
- public SOAPMediator createMediator(boolean serverMode)
- throws SOAPException {
- // create a new mediator for each invoke for thread-safety
- boolean rpcStyle = getStyle().equals("rpc");
- boolean rpcEncoded = isEncoded();
-
- SOAPMediator mediator = null;
-
- if (!rpcStyle) {
- // Document
- mediator = new SOAPDocumentLiteralMediatorImpl(this, serverMode);
- } else {
- if (!rpcEncoded)
- mediator = new SOAPRPCLiteralMediatorImpl(this, serverMode); // RPC-literal
- else
- mediator = new SOAPRPCEncodedMediatorImpl(this, serverMode); // RPC-encoded
- }
- return mediator;
- }
- */
-
- /**
- * Get the operation signature from the WSDL operation
- *
- * @param wsdlBinding
- * @param bindingOperation
- * @return
- */
- public List getOperationSignature() {
- if (signature == null) {
- signature = new ArrayList();
-
- Operation operation = bindingOperation.getOperation();
- if (operation == null)
- return signature;
-
- final Input input = operation.getInput();
- if (input == null) {
- return signature;
- }
-
- String style = getStyle();
-
- if (style.equals("rpc")) {
- Collection partNames = input.getMessage().getParts().values();
- for (Iterator i = partNames.iterator(); i.hasNext();) {
- Part part = (Part) i.next();
- signature.add(part.getName());
- }
- } else {
- /*
- * WS-I Basic Profile 1.1 4.7.6 Operation Signatures
- * Definition: operation signature
- *
- * The profile defines the "operation signature" to be the
- * fully qualified name of the child element of SOAP body of
- * the SOAP input message described by an operation in a
- * WSDL binding.
- *
- * In the case of rpc-literal binding, the operation name is
- * used as a wrapper for the part accessors. In the
- * document-literal case, since a wrapper with the operation
- * name is not present, the message signatures must be
- * correctly designed so that they meet this requirement.
- *
- * An endpoint that supports multiple operations must
- * unambiguously identify the operation being invoked based
- * on the input message that it receives. This is only
- * possible if all the operations specified in the
- * wsdl:binding associated with an endpoint have a unique
- * operation signature.
- *
- * R2710 The operations in a wsdl:binding in a DESCRIPTION
- * MUST result in operation signatures that are different
- * from one another.
- */
- List bodyParts = getSOAPBodyParts(true);
-
- Collection parts = input.getMessage().getParts().values();
- // Exclude the parts to be transmitted in SOAP header
- if (bodyParts == null)
- parts.removeAll(getInputHeaderParts());
- for (Iterator i = parts.iterator(); i.hasNext();) {
- Part part = (Part) i.next();
- if (bodyParts == null) {
- // All parts
- QName elementName = part.getElementName();
- if (elementName == null) {
- elementName = new QName("", part.getName());
- // TODO: [rfeng] throw new
- // ServiceRuntimeException("Message part for
- // document style must refer to an XSD element
- // using a QName: " + part);
- }
- signature.add(elementName);
- } else {
- // "parts" in soap:body
- if (bodyParts.contains(part.getName())) {
- QName elementName = part.getElementName();
- if (elementName == null) {
- elementName = new QName("", part.getName());
- // TODO: [rfeng] throw new
- // ServiceRuntimeException("Message part for
- // document style must refer to an XSD
- // element using a QName: " + part);
- }
- signature.add(elementName);
- }
-
- }
- }
- }
- }
- return signature;
- }
-
- public Message getMessage(boolean isInput) {
- Operation operation = bindingOperation.getOperation();
- if (operation == null)
- return null;
-
- if (isInput) {
- final Input input = operation.getInput();
- return input == null ? null : input.getMessage();
- } else {
- final Output output = operation.getOutput();
- return output == null ? null : output.getMessage();
- }
- }
-
- public Part getInputPart(int index) {
- Part part = null;
- Message message = getMessage(true);
- if (message == null)
- return part;
-
- List parts = message.getOrderedParts(null);
- return (Part) parts.get(index);
-
- }
-
- public Part getOutputPart(int index) {
- Part part = null;
- Message message = getMessage(false);
- if (message == null)
- return part;
-
- List parts = message.getOrderedParts(null);
- return (Part) parts.get(index);
-
- }
-
- /**
- * Get a list of indexes for each part in the SOAP body
- *
- * @param isInput TODO
- * @return
- */
- public List getBodyPartIndexes(boolean isInput) {
- List indexes = new ArrayList();
-
- Message message = getMessage(isInput);
- if (message == null)
- return indexes;
-
- List bodyParts = getSOAPBodyParts(isInput);
- List parts = message.getOrderedParts(null);
- Set headerParts = (isInput) ? getInputHeaderParts() : getOutputHeaderParts();
-
- int index = 0;
- for (Iterator i = parts.iterator(); i.hasNext(); index++) {
- Part part = (Part) i.next();
- if (headerParts.contains(part))
- continue;
- if (bodyParts == null) {
- // All parts
- indexes.add(new Integer(index));
- } else {
- // "parts" in soap:body
- if (bodyParts.contains(part.getName()))
- indexes.add(new Integer(index));
-
- }
- }
- return indexes;
- }
-
- /**
- * Get the corresponding index for a part in the SOAP header by element
- * name
- *
- * @param elementName
- * @param isInput TODO
- * @return
- */
- public int getHeaderPartIndex(QName elementName, boolean isInput) {
-
- Message message = getMessage(isInput);
- if (message == null)
- return -1;
-
- List parts = message.getOrderedParts(null);
- Set headerParts = isInput ? getInputHeaderParts() : getOutputHeaderParts();
-
- int index = 0;
- for (Iterator i = parts.iterator(); i.hasNext(); index++) {
- Part part = (Part) i.next();
- // Test if the part is in header section
- if (headerParts.contains(part) && elementName.equals(part.getElementName())) {
- return index;
- }
- }
- return -1;
- }
-
- public BindingOperation getBindingOperation() {
- return bindingOperation;
- }
-
-} \ No newline at end of file
diff --git a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java b/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java
deleted file mode 100644
index 15eec4dc7e..0000000000
--- a/tags/java-stable-20060304/sca/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServicePortMetaData.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.binding.axis2.handler;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.wsdl.Binding;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.Definition;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import javax.wsdl.extensions.soap.SOAPAddress;
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.xml.namespace.QName;
-//import javax.xml.soap.Name;
-//import javax.xml.soap.SOAPBodyElement;
-//import javax.xml.soap.SOAPElement;
-
-import org.apache.tuscany.model.types.wsdl.WSDLServiceContract;
-
-/**
- * Metadata for a WSDL port
- *
- */
-public class WebServicePortMetaData {
-
- private final static String SOAP_ENCODING_URI = "http://schemas.xmlsoap.org/wsdl/soap/";
-
- private Service wsdlService;
- private QName wsdlServiceName;
- private Port wsdlPort;
- private Binding wsdlBinding;
- private QName wsdlPortName;
- private PortType wsdlPortType;
- private QName wsdlPortTypeName;
- private String endpoint;
- private boolean managed;
- private List allOperationMetaData;
- private WSDLServiceContract interfaceType;
-
- /**
- * Constructor
- *
- * @param wsdlDefinition
- * @param portName
- */
- public WebServicePortMetaData(Definition wsdlDefinition, Port wsdlPort, String endpoint, boolean managed) {
-
- // Lookup the named port
- this.wsdlPort=wsdlPort;
- wsdlPortName = new QName(wsdlDefinition.getTargetNamespace(), wsdlPort.getName());
-
- Collection<Service> services=(Collection<Service>)wsdlDefinition.getServices().values();
- for (Service service : services) {
- if (service.getPorts().containsValue(wsdlPort)) {
- wsdlService = service;
- wsdlServiceName = service.getQName();
- break;
- }
- }
-
- // Save the binding
- wsdlBinding = wsdlPort.getBinding();
- if (wsdlBinding == null) {
- throw new IllegalArgumentException("WSDL binding cannot be found for " + wsdlPortName);
- }
-
- // Save the portType
- wsdlPortType = wsdlBinding.getPortType();
- if (wsdlPortType == null) {
- throw new IllegalArgumentException("WSDL portType cannot be found for " + wsdlPortName);
- }
- wsdlPortTypeName = wsdlPortType.getQName();
-
- // Save the endpoint
- this.endpoint = endpoint;
-
- // Track if this endpoint is managed or not
- this.managed = managed;
- }
-
- /**
- * Constructor
- *
- * @param serviceName
- * @param portName
- * @param portType
- */
- public WebServicePortMetaData(QName serviceName, String portName, QName portTypeName, String endpoint) {
- wsdlServiceName = serviceName;
- wsdlPortName = new QName(serviceName.getNamespaceURI(), portName);
- wsdlPortTypeName = portTypeName;
- this.endpoint = endpoint;
- }
-
- /**
- * @return Returns the wsdlPort.
- */
- public javax.wsdl.Port getPort() {
- return wsdlPort;
- }
-
- /**
- * @return Returns the wsdlService.
- */
- public QName getServiceName() {
- return wsdlServiceName;
- }
-
- /**
- * @return Returns the wsdlService.
- */
- public javax.wsdl.Service getService() {
- return wsdlService;
- }
-
- /**
- * @return Returns the wsdlPortType.
- */
- public PortType getPortType() {
- return wsdlPortType;
- }
-
- /**
- * @return Returns the wsdlPortType.
- */
- public QName getPortTypeName() {
- return wsdlPortTypeName;
- }
-
- /**
- * @return Returns the wsdlBinding.
- */
- public Binding getBinding() {
- return wsdlBinding;
- }
-
- /**
- * @return Returns the wsdlPortName.
- */
- public QName getPortName() {
- return wsdlPortName;
- }
-
- /**
- * Returns the endpoint of a given port.
- *
- * @param wsdlPort
- * @return
- */
- public String getEndpoint() {
-
- // Return the specified endpoint
- if (endpoint != null)
- return endpoint;
-
- // Find the target endpoint on the port
- if (wsdlPort != null) {
- final List wsdlPortExtensions = wsdlPort.getExtensibilityElements();
- for (Iterator i = wsdlPortExtensions.iterator(); i.hasNext();) {
- final Object extension = i.next();
- if (extension instanceof SOAPAddress) {
- final SOAPAddress address = (SOAPAddress) extension;
- return address.getLocationURI();
- }
- }
- }
-
- return null;
- }
-
- /**
- * Returns the SOAP binding style.
- * @return
- */
- public String getStyle() {
-
- // Find the binding style
- String style = null;
- if (wsdlBinding != null) {
- final List wsdlBindingExtensions = wsdlBinding.getExtensibilityElements();
- SOAPBinding soapBinding = (SOAPBinding) getExtensibilityElement(wsdlBindingExtensions, SOAPBinding.class);
- if (soapBinding != null)
- style = soapBinding.getStyle();
- }
-
- // Default to document
- return (style == null) ? "document" : style;
- }
-
- /**
- * Returns the use attribute
- * @return
- */
- public String getUse() {
- List list = getAllOperationMetaData();
- WebServiceOperationMetaData operationMetaData = (WebServiceOperationMetaData) list.get(0);
- return operationMetaData.getUse();
- }
-
- /**
- * Returns the encoding attribute
- * @return
- */
- public String getEncoding() {
- List list = getAllOperationMetaData();
- WebServiceOperationMetaData operationMetaData = (WebServiceOperationMetaData) list.get(0);
- return operationMetaData.getEncoding();
- }
-
- /**
- * @return Returns true if this is a managed web service.
- */
- public boolean isManaged() {
- return managed;
- }
-
- /**
- * Returns the first extensibility element of the given type.
- * @param elements
- * @param type
- * @return
- */
- public static Object getExtensibilityElement(List elements, Class type) {
- for (Iterator i = elements.iterator(); i.hasNext();) {
- Object element = i.next();
- if (type.isInstance(element))
- return element;
- }
- return null;
- }
-
- /**
- * Returns the extensibility elements of the given type.
- * @param elements
- * @param type
- * @return
- */
- public static List getExtensibilityElements(List elements, Class type) {
- List result = new ArrayList();
- for (Iterator i = elements.iterator(); i.hasNext();) {
- Object element = i.next();
- if (type.isInstance(element))
- result.add(element);
- }
- return result;
- }
-
- /**
- * Get the operation signature from the SOAP Body
- * @param body
- * @return A list of QNames
- */
-// public static List getOperationSignature(javax.xml.soap.SOAPBody body) {
-// List signature = new ArrayList();
-// for (Iterator i = body.getChildElements(); i.hasNext();) {
-// Object child = i.next();
-// if (child instanceof SOAPBodyElement) {
-// Name name = ((SOAPBodyElement) child).getElementName();
-// QName qname = new QName(name.getURI(), name.getLocalName(), name.getPrefix());
-// signature.add(qname);
-// }
-// }
-// return signature;
-// }
-
-// public static List getRPCOperationSignature(javax.xml.soap.SOAPBody body) {
-// List signature = new ArrayList();
-// for (Iterator i = body.getChildElements(); i.hasNext();) {
-// Object child = i.next();
-// if (child instanceof SOAPBodyElement) {
-// SOAPBodyElement op = ((SOAPBodyElement) child);
-// for (Iterator j = op.getChildElements(); j.hasNext();) {
-// Object part = i.next();
-// if (part instanceof SOAPElement) {
-// SOAPElement p = (SOAPElement) part;
-// signature.add(p.getLocalName());
-// }
-// }
-// }
-// }
-// return signature;
-// }
-
-// public WebServiceOperationMetaData getOperationMetaData(javax.xml.soap.SOAPBody body) {
-// List s1 = getOperationSignature(body);
-// // List rpcParts = getRPCOperationSignature(body);
-// for (Iterator it = getAllOperationMetaData().iterator(); it.hasNext();) {
-// WebServiceOperationMetaData descriptor = (WebServiceOperationMetaData) it.next();
-//
-// String style = descriptor.getStyle();
-//
-// if (style.equals("document")) {
-// List s2 = descriptor.getOperationSignature();
-// if (s1.equals(s2))
-// return descriptor;
-// } else {
-// QName op1 = (QName) s1.get(0);
-// QName op2 = descriptor.getRPCOperationName();
-// if (op1.equals(op2)) {
-// /*
-// * // FIXME: [rfeng] We don't support method overloading
-// * List partNames = getOperationSignature(binding,
-// * bindingOperation); if (rpcParts.equals(partNames))
-// */
-// return descriptor;
-// }
-// }
-// }
-// return null;
-// }
-
- public List getAllOperationMetaData() {
- if (allOperationMetaData == null) {
- allOperationMetaData = new ArrayList();
- for (Iterator it = wsdlBinding.getBindingOperations().iterator(); it.hasNext();) {
- final BindingOperation bindingOperation = (BindingOperation) it.next();
- if (bindingOperation.getOperation() != null)
- allOperationMetaData.add(new WebServiceOperationMetaData(wsdlBinding, bindingOperation));
- }
- }
- return allOperationMetaData;
- }
-
- public WebServiceOperationMetaData getOperationMetaData(String operationName) {
- for (Iterator it = getAllOperationMetaData().iterator(); it.hasNext();) {
- WebServiceOperationMetaData descriptor = (WebServiceOperationMetaData) it.next();
- String opName = descriptor.getBindingOperation().getOperation().getName();
-
- if (opName.equals(operationName))
- return descriptor;
- }
- return null;
- }
-
- /**
- * Returns the WSDL service contract
- * @return
- */
- public WSDLServiceContract getInterfaceType() {
- return interfaceType;
- }
-
-} \ No newline at end of file