You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/04/29 12:08:34 UTC
svn commit: r398113 - in
/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2:
handler/ loader/ util/
Author: antelder
Date: Sat Apr 29 03:08:31 2006
New Revision: 398113
URL: http://svn.apache.org/viewcvs?rev=398113&view=rev
Log:
Start of the weekends Axis2 binding refactoring, goals being:
- move to having each operation pre-prepared as much as possible
- use the TuscanyHost stuff to get the servlet registered
- get ready for Axis2 1.0
- fix a few bugs
Added:
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/DataBinding.java
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
Modified:
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/loader/WebServiceBindingLoader.java
incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java
Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java?rev=398113&r1=398112&r2=398113&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointInOutSyncMessageReceiver.java Sat Apr 29 03:08:31 2006
@@ -16,123 +16,67 @@
*/
package org.apache.tuscany.binding.axis2.handler;
-import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.xml.namespace.QName;
-import commonj.sdo.helper.TypeHelper;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver;
-
-import org.apache.tuscany.binding.axis2.util.AxiomHelper;
-import org.apache.tuscany.core.context.EntryPointContext;
-
+import org.apache.tuscany.binding.axis2.util.DataBinding;
+import org.apache.tuscany.core.wire.InvocationRuntimeException;
import org.apache.ws.commons.om.OMElement;
-import org.apache.ws.commons.soap.SOAPBody;
import org.apache.ws.commons.soap.SOAPEnvelope;
-import org.apache.ws.commons.soap.SOAPFactory;
-import org.apache.wsdl.WSDLConstants;
-
+import org.apache.ws.commons.soap.SOAPProcessingException;
public class WebServiceEntryPointInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver {
- public static final String MEP_URL = WSDLConstants.MEP_URI_IN_OUT;
- private final EntryPointContext entryPointContext;
- private final TypeHelper typeHelper;
- private final ClassLoader classLoader;
- private final Map<String, QName> responseTypeMap;
- private final Map<String, Method> methodMap;
-
- /**
- * Constructor WebServiceEntryPointInOutSyncMessageReceiver
- *
- * @param context
- * @param wsdlPortInfo
- */
- public WebServiceEntryPointInOutSyncMessageReceiver(EntryPointContext context,
- WebServicePortMetaData wsdlPortInfo,
- TypeHelper typeHelper,
- ClassLoader classLoader) {
- this.entryPointContext = context;
- Class<?> serviceInterface = entryPointContext.getServiceInterface();
-// Class<?> serviceInterface = entryPoint.getConfiguredService().getPort()
-// .getServiceContract().getInterface();
- Method[] methods = serviceInterface.getMethods();
- Map<String, Method> map = new HashMap<String, Method>(methods.length);
- for (Method method : methods) {
- map.put(method.getName(), method);
- }
+ private Object entryPointProxy;
- // initialize maps
- List<WebServiceOperationMetaData> operations = wsdlPortInfo.getAllOperationMetaData();
- responseTypeMap = new HashMap<String, QName>(operations.size());
- methodMap = new HashMap<String, Method>(operations.size());
- for (WebServiceOperationMetaData operation : operations) {
- String opName = operation.getBindingOperation().getOperation().getName();
- QName qname = operation.getOutputPart(0).getElementName();
- responseTypeMap.put(opName, qname);
+ protected Method operationMethod;
- Method method = map.get(opName);
- methodMap.put(opName, method);
- }
+ protected DataBinding dataBinding;
- this.typeHelper = typeHelper;
- this.classLoader = classLoader;
+ public WebServiceEntryPointInOutSyncMessageReceiver(Object entryPointProxy, Method operationMethod, DataBinding dataBinding) {
+ this.entryPointProxy = entryPointProxy;
+ this.operationMethod = operationMethod;
+ this.dataBinding = dataBinding;
}
- public void invokeBusinessLogic(MessageContext msgContext,
- MessageContext outMsgContext)
- throws AxisFault {
-
- // set application classloader onto the thread
- ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+ @Override
+ public void invokeBusinessLogic(MessageContext inMC, MessageContext outMC) throws AxisFault {
+ ClassLoader tccl = Thread.currentThread().getContextClassLoader();
+ ClassLoader mycl = getClass().getClassLoader();
try {
- Thread.currentThread().setContextClassLoader(classLoader);
-
- // get operation name from request message
- AxisOperation axisOperation = msgContext.getAxisOperation();
- String axisOperationName = axisOperation.getName().getLocalPart();
-
- // de-serialize request parameters to objects
- OMElement requestOM = msgContext.getEnvelope().getBody().getFirstElement();
- Object[] args = AxiomHelper.toObjects(typeHelper, requestOM);
-
- // invoke the proxy's InvocationHandler
- // FIXME we should be invoking the Tuscany pipeline rather than the proxy
- Method operationMethod = methodMap.get(axisOperationName);
- InvocationHandler handler = (InvocationHandler) entryPointContext.getHandler();
- Object response = handler.invoke(null, operationMethod, args);
-
- // construct the response message
- SOAPFactory fac = getSOAPFactory(msgContext);
- SOAPEnvelope soapenv = fac.getDefaultEnvelope();
- SOAPBody soapbody = soapenv.getBody();
-
- // serialize the wire respose into the message
- QName responseTypeQN = responseTypeMap.get(axisOperationName);
- OMElement responseOM = AxiomHelper.toOMElement(typeHelper,
- new Object[]{response},
- responseTypeQN);
- soapbody.addChild(responseOM);
-
- outMsgContext.setEnvelope(soapenv);
- outMsgContext.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
- } 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);
+ if (tccl != mycl) {
+ Thread.currentThread().setContextClassLoader(mycl);
+ }
+ try {
+
+ invokeEntryPoint(inMC, outMC);
+
+ } catch (Exception e) {
+ throw new InvocationRuntimeException(e);
+ }
} finally {
- Thread.currentThread().setContextClassLoader(oldCl);
+ if (tccl != mycl) {
+ Thread.currentThread().setContextClassLoader(tccl);
+ }
}
}
+
+ protected void invokeEntryPoint(MessageContext inMC, MessageContext outMC) throws IllegalArgumentException, IllegalAccessException,
+ InvocationTargetException, SOAPProcessingException, AxisFault {
+
+ OMElement requestOM = inMC.getEnvelope().getBody().getFirstElement();
+ Object[] request = dataBinding.processRequest(requestOM);
+ Object response = operationMethod.invoke(entryPointProxy, request);
+ OMElement responseOM = dataBinding.processResponse(response);
+
+ SOAPEnvelope soapEnvelope = getSOAPFactory(inMC).getDefaultEnvelope();
+ soapEnvelope.getBody().addChild(responseOM);
+ outMC.setEnvelope(soapEnvelope);
+ outMC.getOperationContext().setProperty(Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
+ }
+
}
Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java?rev=398113&r1=398112&r2=398113&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/handler/WebServiceEntryPointServlet.java Sat Apr 29 03:08:31 2006
@@ -21,7 +21,9 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.Method;
import java.net.URL;
+
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@@ -29,7 +31,6 @@
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;
@@ -42,19 +43,25 @@
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.transport.http.AxisServlet;
import org.apache.tuscany.binding.axis2.assembly.WebServiceBinding;
+import org.apache.tuscany.binding.axis2.util.DataBinding;
+import org.apache.tuscany.binding.axis2.util.SDODataBinding;
import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.Context;
import org.apache.tuscany.core.context.EntryPointContext;
+import org.apache.tuscany.core.webapp.TuscanyServletListener;
import org.apache.tuscany.model.assembly.Binding;
import org.apache.tuscany.model.assembly.EntryPoint;
import org.apache.tuscany.model.assembly.Module;
+import org.apache.wsdl.WSDLConstants;
+
+import commonj.sdo.helper.TypeHelper;
/**
* @version $Rev: 383148 $ $Date: 2006-03-04 08:07:17 -0800 (Sat, 04 Mar 2006) $
*/
public class WebServiceEntryPointServlet extends AxisServlet {
- private static final long serialVersionUID = -2085869393709833372L;
- private static final String MODULE_COMPONENT_NAME = "org.apache.tuscany.core.webapp.ModuleComponentContext";
+
+ private static final long serialVersionUID = 1L;
+
private boolean tuscanyGetDefaultAxis2xmlChecked;
public void init(ServletConfig config) throws ServletException {
@@ -64,13 +71,14 @@
if (tccl != mycl) {
Thread.currentThread().setContextClassLoader(mycl);
}
- tuscanyGetDefaultAxis2xml(config);
- super.init(config);
- configContext = initConfigContext(config);
- initTuscany(configContext.getAxisConfiguration(), config);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ServletException(e);
+ try {
+
+ super.init(config);
+ initTuscany(configContext.getAxisConfiguration(), config);
+
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
} finally {
if (tccl != mycl) {
Thread.currentThread().setContextClassLoader(tccl);
@@ -79,63 +87,84 @@
}
@SuppressWarnings("deprecation")
- private void initTuscany(final AxisConfiguration axisConfig, ServletConfig config) throws AxisFault {
+ private void initTuscany(AxisConfiguration axisConfig, ServletConfig config) throws AxisFault {
- // Get the current SCA module context
ServletContext servletContext = config.getServletContext();
-
- CompositeContext moduleContext = (CompositeContext) servletContext.getAttribute(MODULE_COMPONENT_NAME);
+ CompositeContext moduleContext = (CompositeContext) servletContext.getAttribute(TuscanyServletListener.MODULE_COMPONENT_NAME);
Module module = (Module) moduleContext.getComposite();
for (EntryPoint entryPoint : module.getEntryPoints()) {
- final String epName = entryPoint.getName();
+ for (Binding binding : entryPoint.getBindings()) {
+ if (binding instanceof WebServiceBinding) {
+ String entryPointName = entryPoint.getName();
+ EntryPointContext entryPointContext = (EntryPointContext) moduleContext.getContext(entryPointName);
+ addAxisService(axisConfig, entryPointName, entryPointContext, (WebServiceBinding) binding);
+ }
+ }
+ }
+ }
- Context entryPointContext = moduleContext.getContext(epName);
+ private void addAxisService(AxisConfiguration axisConfig, String entryPointName, EntryPointContext entryPointContext, WebServiceBinding wsBinding)
+ throws AxisFault {
- Binding binding = entryPoint.getBindings().get(0);
- if (!(binding instanceof WebServiceBinding)) {
- continue;
- }
-
- WebServiceBinding wsBinding = (WebServiceBinding) binding;
- Definition definition = wsBinding.getWSDLDefinition();
- Port port = wsBinding.getWSDLPort();
- QName qname = new QName(definition.getTargetNamespace(), port.getName());
-
- WebServicePortMetaData wsdlPortInfo = new WebServicePortMetaData(definition, port, null, false);
-
- WebServiceEntryPointInOutSyncMessageReceiver msgrec
- = new WebServiceEntryPointInOutSyncMessageReceiver((EntryPointContext) entryPointContext,
- wsdlPortInfo,
- wsBinding.getTypeHelper(),
- wsBinding.getResourceLoader().getClassLoader());
-
- AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
- axisConfig.addMessageReceiver(WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL, msgrec);
- serviceGroup.setServiceGroupName(wsdlPortInfo.getServiceName().getLocalPart());
-
- AxisService axisService = new AxisService(epName);
- axisService.setParent(serviceGroup);
- axisService.setWSDLDefinition(definition);
- axisService.setServiceDescription("Tuscany configured service EntryPoint name '" + epName + '\'');
- axisService.addMessageReceiver(WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL, msgrec);
-
- // Create operation descriptions for all the operations
- PortType wsdlPortType = wsdlPortInfo.getPortType();
- for (Object o : wsdlPortType.getOperations()) {
- Operation wsdlOperation = (Operation) o;
- String operationName = wsdlOperation.getName();
- QName name = new QName(qname.getNamespaceURI(), operationName);
- AxisOperation axisOp = new InOutAxisOperation(name);
- axisOp.setMessageReceiver(msgrec);
- axisService.addOperation(axisOp);
- axisOp.setMessageExchangePattern(WebServiceEntryPointInOutSyncMessageReceiver.MEP_URL);
- }
- axisConfig.addService(axisService);
- axisConfig.addServiceGroup(serviceGroup);
+ // TODO: really require using WebServicePortMetaData/WebServiceOperationMetaData?
+ Definition definition = wsBinding.getWSDLDefinition();
+ WebServicePortMetaData wsdlPortInfo = new WebServicePortMetaData(definition, wsBinding.getWSDLPort(), null, false);
+
+ AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
+ serviceGroup.setServiceGroupName(wsdlPortInfo.getServiceName().getLocalPart());
+ axisConfig.addServiceGroup(serviceGroup);
+
+ AxisService axisService = new AxisService(entryPointName);
+ axisService.setParent(serviceGroup);
+ axisService.setWSDLDefinition(definition);
+ axisService.setServiceDescription("Tuscany configured service EntryPoint name '" + entryPointName + '\'');
+
+ TypeHelper typeHelper = wsBinding.getTypeHelper();
+
+ Class<?> serviceInterface = entryPointContext.getServiceInterface();
+
+ PortType wsdlPortType = wsdlPortInfo.getPortType();
+ for (Object o : wsdlPortType.getOperations()) {
+ Operation wsdlOperation = (Operation) o;
+ String operationName = wsdlOperation.getName();
+ QName operationQN = new QName(definition.getTargetNamespace(), operationName);
+ Object entryPointProxy = entryPointContext.getInstance(null);
+
+ WebServiceOperationMetaData omd = wsdlPortInfo.getOperationMetaData(operationName);
+ QName responseTypeQN = omd.getOutputPart(0).getElementName();
+
+ Method operationMethod = getMethod(serviceInterface, operationName);
+ DataBinding dataBinding = new SDODataBinding(typeHelper, responseTypeQN);
+ WebServiceEntryPointInOutSyncMessageReceiver msgrec = new WebServiceEntryPointInOutSyncMessageReceiver(entryPointProxy, operationMethod,
+ dataBinding);
+
+ AxisOperation axisOp = new InOutAxisOperation(operationQN);
+ axisOp.setMessageExchangePattern(WSDLConstants.MEP_URI_IN_OUT);
+ axisOp.setMessageReceiver(msgrec);
+ axisService.addOperation(axisOp);
}
+
+ axisConfig.addService(axisService);
}
+ protected Method getMethod(Class<?> serviceInterface, String operationName) {
+ // Note: this doesn't support overloaded operations
+ Method[] methods = serviceInterface.getMethods();
+ for (Method m : methods) {
+ if (m.getName().equals(operationName)) {
+ return m;
+ }
+ // tolerate WSDL with capatalized operation name
+ StringBuffer sb = new StringBuffer(operationName);
+ sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
+ if (m.getName().equals(sb.toString())) {
+ return m;
+ }
+ }
+ // TODO: throw which ex, or maybe just log and ignore unknown ops?
+ throw new RuntimeException("no operation named " + operationName + " found on service interface: " + serviceInterface.getName());
+ }
@SuppressWarnings("deprecation")
protected synchronized void tuscanyGetDefaultAxis2xml(ServletConfig config) throws IOException {
@@ -146,9 +175,7 @@
tuscanyGetDefaultAxis2xmlChecked = true;
ServletContext context = config.getServletContext();
String repoDir = context.getRealPath("/WEB-INF");
- String axis2config = repoDir +
- "/" + DeploymentConstants.DIRECTORY_CONF +
- "/" + DeploymentConstants.AXIS2_CONFIGURATION_XML;
+ String axis2config = repoDir + "/" + DeploymentConstants.DIRECTORY_CONF + "/" + DeploymentConstants.AXIS2_CONFIGURATION_XML;
File axis2xmlFile = new File(axis2config);
constructSubDirectories(axis2xmlFile.getParentFile());
Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/loader/WebServiceBindingLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/loader/WebServiceBindingLoader.java?rev=398113&r1=398112&r2=398113&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/loader/WebServiceBindingLoader.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/loader/WebServiceBindingLoader.java Sat Apr 29 03:08:31 2006
@@ -59,6 +59,7 @@
registry.unregisterLoader(BINDING_WS, this);
}
+ @SuppressWarnings("deprecation")
public WebServiceBinding load(XMLStreamReader reader,
LoaderContext loaderContext)
throws XMLStreamException, ConfigurationLoadException {
Modified: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java?rev=398113&r1=398112&r2=398113&view=diff
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java (original)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/AxiomHelper.java Sat Apr 29 03:08:31 2006
@@ -19,9 +19,6 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PipedInputStream;
-import java.io.PipedOutputStream;
import java.util.List;
import javax.xml.namespace.QName;
@@ -30,12 +27,6 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import commonj.sdo.DataObject;
-import commonj.sdo.Property;
-import commonj.sdo.helper.TypeHelper;
-import commonj.sdo.helper.XMLDocument;
-import commonj.sdo.helper.XSDHelper;
-
import org.apache.tuscany.sdo.helper.DataFactoryImpl;
import org.apache.tuscany.sdo.helper.XMLHelperImpl;
import org.apache.tuscany.sdo.helper.XSDHelperImpl;
@@ -45,6 +36,11 @@
import org.apache.ws.commons.om.impl.llom.factory.OMXMLBuilderFactory;
import org.osoa.sca.ServiceRuntimeException;
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XSDHelper;
/**
* Utility methods to convert between Axis2 AXIOM, SDO DataObjects and Java objects.
Added: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/DataBinding.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/DataBinding.java?rev=398113&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/DataBinding.java (added)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/DataBinding.java Sat Apr 29 03:08:31 2006
@@ -0,0 +1,26 @@
+/**
+ * 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.util;
+
+import org.apache.ws.commons.om.OMElement;
+
+public interface DataBinding {
+
+ Object[] processRequest(OMElement omElement);
+
+ OMElement processResponse(Object response);
+
+}
Added: incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java?rev=398113&view=auto
==============================================================================
--- incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java (added)
+++ incubator/tuscany/java/sca/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/util/SDODataBinding.java Sat Apr 29 03:08:31 2006
@@ -0,0 +1,45 @@
+/**
+ * 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.util;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ws.commons.om.OMElement;
+
+import commonj.sdo.helper.TypeHelper;
+
+public class SDODataBinding implements DataBinding {
+
+ private TypeHelper typeHelper;
+
+ private QName typeQN;
+
+ public SDODataBinding(TypeHelper typeHelper, QName typeQN) {
+ this.typeHelper = typeHelper;
+ this.typeQN = typeQN;
+ }
+
+ public Object[] processRequest(OMElement omElement) {
+ Object[] args = AxiomHelper.toObjects(typeHelper, omElement);
+ return args;
+ }
+
+ public OMElement processResponse(Object response) {
+ OMElement omElement = AxiomHelper.toOMElement(typeHelper, new Object[] { response }, typeQN);
+ return omElement;
+ }
+
+}