Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,203 @@
+/**
+ *
+ * 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.celtix.handler;
+
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.jws.WebParam.Mode;
+import javax.wsdl.Binding;
+import javax.wsdl.Definition;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.xml.ws.Holder;
+import javax.xml.ws.ProtocolException;
+
+import commonj.sdo.helper.TypeHelper;
+
+import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding;
+import org.apache.tuscany.binding.celtix.handler.io.SCADataBindingCallback;
+import org.apache.tuscany.core.builder.BuilderException;
+import org.apache.tuscany.core.builder.BuilderInitException;
+import org.apache.tuscany.model.assembly.ExternalService;
+import org.objectweb.celtix.Bus;
+import org.objectweb.celtix.BusException;
+import org.objectweb.celtix.bindings.ClientBinding;
+import org.objectweb.celtix.bindings.DataBindingCallback;
+import org.objectweb.celtix.bus.bindings.WSDLMetaDataCache;
+import org.objectweb.celtix.bus.bindings.WSDLOperationInfo;
+import org.objectweb.celtix.context.ObjectMessageContext;
+import org.objectweb.celtix.ws.addressing.EndpointReferenceType;
+import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
+import org.xmlsoap.schemas.wsdl.http.AddressType;
+
+
+/**
+ * An ExternalWebServiceClient using Celtix
+ */
+public class ExternalWebServiceClient {
+
+ private Bus bus;
+ private TypeHelper typeHelper;
+ private WSDLMetaDataCache wsdlCache;
+ private ClientBinding clientBinding;
+
+ public ExternalWebServiceClient(Bus b, ExternalService externalService)
+ throws BuilderException {
+
+ bus = b;
+
+ WebServiceBinding wsBinding =
(WebServiceBinding)externalService.getBindings().get(0);
+ typeHelper =
externalService.getComposite().getAssemblyContext().getTypeHelper();
+ Definition wsdlDef = wsBinding.getWSDLDefinition();
+ wsdlCache = new WSDLMetaDataCache(wsdlDef, wsBinding.getWSDLPort());
+
+
+ try {
+ String key = wsdlDef.getDocumentBaseURI();
+ URL url = new URL(key);
+ bus.getWSDLManager().addDefinition(key, wsdlDef);
+ bus.getWSDLManager().addDefinition(url, wsdlDef);
+
+ EndpointReferenceType reference = EndpointReferenceUtils
+ .getEndpointReference(url,
+ wsBinding.getWSDLService().getQName(),
+ wsBinding.getWSDLPort().getName());
+
+ String bindingId = null;
+ Binding binding = wsBinding.getWSDLPort().getBinding();
+ if (null != binding) {
+ List list = binding.getExtensibilityElements();
+ if (!list.isEmpty()) {
+ bindingId =
((ExtensibilityElement)list.get(0)).getElementType().getNamespaceURI();
+ }
+ }
+ if (bindingId == null) {
+ List<?> list =
wsBinding.getWSDLPort().getExtensibilityElements();
+ for (Object ep : list) {
+ ExtensibilityElement ext = (ExtensibilityElement)ep;
+ if (ext instanceof SOAPAddress) {
+ bindingId = ((SOAPAddress)ext).getLocationURI();
+ }
+ if (ext instanceof AddressType) {
+ bindingId = ((AddressType)ext).getLocation();
+ }
+ }
+
+ }
+
+ clientBinding = bus.getBindingManager()
+ .getBindingFactory(bindingId)
+ .createClientBinding(reference);
+ } catch (MalformedURLException e) {
+ throw new BuilderInitException(e);
+ } catch (BusException e) {
+ throw new BuilderInitException(e);
+ } catch (WSDLException e) {
+ throw new BuilderInitException(e);
+ } catch (IOException e) {
+ throw new BuilderInitException(e);
+ }
+ }
+
+ /**
+ * Invoke an operation on the external Web service.
+ *
+ * @param operationName
+ * the name of the WS operation to invoke
+ * @param args
+ * the Java object arguments to the WS operation
+ * @return the response from the WS as a Java object
+ */
+ public Object invoke(String operationName, Object[] args) {
+ System.out.println(operationName + ": " + Arrays.asList(args));
+
+ WSDLOperationInfo opInfo = wsdlCache.getOperationInfo(operationName);
+
+
+ ObjectMessageContext objMsgContext =
clientBinding.createObjectContext();
+
+ boolean hasInOut = false;
+ int inOutCount = 0;
+ Object realArgs[] = new Object[args.length];
+ if (opInfo.getParamsLength() == 0) {
+ //REVISIT - opInfo doesn't return the needed info for the wrapped
doc/lit case.
+ //Bug in Celtix
+ realArgs = args;
+ } else {
+ for (int x = 0; x < args.length; x++) {
+ if (opInfo.getWebParam(x).mode() == Mode.IN) {
+ realArgs[x] = args[x];
+ } else {
+ realArgs[x] = new Holder<Object>(args[x]);
+ inOutCount++;
+ hasInOut = true;
+ }
+ }
+ }
+
+ objMsgContext.setMessageObjects(realArgs);
+
+ boolean isOneway = opInfo.isOneWay();
+ DataBindingCallback callback = new SCADataBindingCallback(opInfo,
typeHelper, hasInOut);
+
+ try {
+ if (isOneway) {
+ clientBinding.invokeOneWay(objMsgContext,
+ callback);
+ } else {
+ objMsgContext = clientBinding.invoke(objMsgContext,
+ callback);
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ if (objMsgContext.getException() != null) {
+ //REVISIT - Exceptions
+ /*
+ if (isValidException(objMsgContext)) {
+ throw (Exception)objMsgContext.getException();
+ } else {
+ throw new ProtocolException(objMsgContext.getException());
+ }
+ */
+ throw new ProtocolException(objMsgContext.getException());
+ }
+
+ if (hasInOut) {
+ Object ret[] = new Object[inOutCount + 1];
+ ret[0] = objMsgContext.getReturn();
+ inOutCount = 1;
+ for (int x = 0; x < args.length; x++) {
+ if (opInfo.getWebParam(x).mode() != Mode.IN) {
+ Holder<?> holder = (Holder<?>)realArgs[x];
+ ret[inOutCount] = holder.value;
+ inOutCount++;
+ }
+ }
+ return ret;
+ }
+ return objMsgContext.getReturn();
+ }
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceClient.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,117 @@
+/**
+ *
+ * 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.celtix.handler;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.context.ExternalServiceContext;
+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.message.Message;
+import org.apache.tuscany.core.wire.Interceptor;
+import org.apache.tuscany.core.wire.TargetInvoker;
+
+
+/**
+ * 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 container
+ */
+ public ExternalWebServiceTargetInvoker(QualifiedName servicename,
+ Method meth,
+ ScopeContext cont) {
+ assert servicename != null : "No service name specified";
+ assert meth != null : "No method specified";
+ assert cont != null : "No scope container specified";
+ this.serviceName = servicename;
+ this.esName = serviceName.getPartName();
+ this.method = meth;
+ this.container = cont;
+ }
+
+ public Object invokeTarget(Object payload) throws
InvocationTargetException {
+ if (context == null) {
+ Context 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.getHandler();
+ if (payload != null) {
+ return client.invoke(method.getName(), (Object[])payload);
+ } else {
+ return client.invoke(method.getName(), 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() throws CloneNotSupportedException {
+ 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) {
+ // will not happen
+ return null;
+ }
+ }
+
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/ExternalWebServiceTargetInvoker.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,105 @@
+package org.apache.tuscany.binding.celtix.handler.io;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSSerializer;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.helper.XMLDocument;
+
+import org.apache.tuscany.sdo.helper.XMLHelperImpl;
+import org.objectweb.celtix.bindings.DataReader;
+import org.objectweb.celtix.context.ObjectMessageContext;
+
+public class NodeDataReader implements DataReader<Node> {
+ SCADataBindingCallback callback;
+
+ public NodeDataReader(SCADataBindingCallback cb) {
+ callback = cb;
+ }
+
+ public Object read(int idx, Node input) {
+ return read(null, idx, input);
+ }
+
+ public Object read(QName name, int idx, Node input) {
+ //REVISIT - doc/lit and rpc/lit support
+
+ return null;
+ }
+
+ public void readWrapper(ObjectMessageContext objCtx, boolean isOutBound,
Node input) {
+ try {
+ QName wrapperName;
+ if (isOutBound) {
+ wrapperName =
callback.getOperationInfo().getResponseWrapperQName();
+ } else {
+ wrapperName =
callback.getOperationInfo().getRequestWrapperQName();
+ }
+
+ Node nd = input.getFirstChild();
+ while (nd != null
+ && !wrapperName.getNamespaceURI().equals(nd.getNamespaceURI())
+ && !wrapperName.getLocalPart().equals(nd.getLocalName())) {
+ nd = nd.getNextSibling();
+ }
+
+ //REVISIT - This is SUCH a HACK. This needs to be done with StAX
or something
+ //a bit better than streaming and reparsing
+ InputStream in = getNodeStream(nd);
+ XMLDocument document = new
XMLHelperImpl(callback.getTypeHelper()).load(in);
+ DataObject object = document.getRootObject();
+
+ List ips = object.getInstanceProperties();
+ Object[] os = new Object[object.getInstanceProperties().size()];
+ for (int i = 0; i < os.length; i++) {
+ os[i] = object.get((Property) ips.get(i));
+ }
+
+ if (callback.hasInOut()) {
+ //REVISIT - inOuts
+ } else {
+ objCtx.setReturn(os[0]);
+ }
+ } catch (IOException e) {
+ throw new WebServiceException(e);
+ } catch (ClassCastException e) {
+ throw new WebServiceException(e);
+ } catch (ClassNotFoundException e) {
+ throw new WebServiceException(e);
+ } catch (InstantiationException e) {
+ throw new WebServiceException(e);
+ } catch (IllegalAccessException e) {
+ throw new WebServiceException(e);
+ }
+ }
+ private InputStream getNodeStream(Node node)
+ throws ClassCastException, ClassNotFoundException,
+ InstantiationException, IllegalAccessException {
+
+ //This is also a hack, the JDK should already have this set, but it
doesn't
+ System.setProperty(DOMImplementationRegistry.PROPERTY,
+
"com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl");
+ DOMImplementationRegistry registry =
DOMImplementationRegistry.newInstance();
+ DOMImplementationLS impl =
(DOMImplementationLS)registry.getDOMImplementation("LS");
+ LSOutput output = impl.createLSOutput();
+ RawByteArrayOutputStream bout = new RawByteArrayOutputStream();
+ output.setByteStream(bout);
+ LSSerializer writer = impl.createLSSerializer();
+ writer.write(node, output);
+
+ return new ByteArrayInputStream(bout.getBytes(), 0, bout.size());
+ }
+
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,136 @@
+package org.apache.tuscany.binding.celtix.handler.io;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.ws.Holder;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.helper.TypeHelper;
+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;
+import org.objectweb.celtix.bindings.DataWriter;
+import org.objectweb.celtix.context.ObjectMessageContext;
+
+public class NodeDataWriter implements DataWriter<Node> {
+ SCADataBindingCallback callback;
+
+ public NodeDataWriter(SCADataBindingCallback cb) {
+ callback = cb;
+ }
+
+ public void write(Object obj, Node output) {
+ write(obj, null, output);
+ }
+
+ public void write(Object obj, QName elName, Node output) {
+ //REVISIT - doc/lit and rpc/lit support
+ }
+
+ public void writeWrapper(ObjectMessageContext objCtx, boolean isOutbound,
Node nd) {
+ QName wrapperName;
+ if (isOutbound) {
+ wrapperName =
callback.getOperationInfo().getResponseWrapperQName();
+ } else {
+ wrapperName = callback.getOperationInfo().getRequestWrapperQName();
+ }
+
+ DataObject obj = toWrappedDataObject(callback.getTypeHelper(),
+ objCtx.getMessageObjects(),
+ wrapperName);
+
+ try {
+ //REVISIT - this is SUCH a hack. SDO needs to be able to
+ //go directly to some formats other than streams. They are working
+ //on stax, but not there yet.
+ RawByteArrayOutputStream bout = new RawByteArrayOutputStream();
+ new XMLHelperImpl(callback.getTypeHelper()).save(obj,
+
wrapperName.getNamespaceURI(),
+
wrapperName.getLocalPart(),
+ bout);
+
+ ByteArrayInputStream bin = new
ByteArrayInputStream(bout.getBytes(),
+ 0,
+ bout.size());
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ factory.setNamespaceAware(true);
+ SAXParser parser = factory.newSAXParser();
+ parser.parse(bin, new NodeContentHandler(nd));
+ } catch (IOException e) {
+ throw new WebServiceException(e);
+ } catch (ParserConfigurationException e) {
+ throw new WebServiceException(e);
+ } catch (SAXException e) {
+ throw new WebServiceException(e);
+ }
+ }
+
+
+ public static DataObject toWrappedDataObject(TypeHelper typeHelper,
+ Object[] os,
+ QName typeQN) {
+ XSDHelper xsdHelper = new XSDHelperImpl(typeHelper);
+ Property property =
xsdHelper.getGlobalProperty(typeQN.getNamespaceURI(),
+ typeQN.getLocalPart(),
true);
+ DataObject dataObject = new
DataFactoryImpl(typeHelper).create(property.getType());
+ List ips = dataObject.getInstanceProperties();
+ for (int i = 0; i < ips.size(); i++) {
+ if (os[i] instanceof Holder) {
+ Holder<?> holder = (Holder<?>)os[i];
+ dataObject.set(i, holder.value);
+ } else {
+ dataObject.set(i, os[i]);
+ }
+ }
+ return dataObject;
+ }
+
+ private class NodeContentHandler extends DefaultHandler {
+ Element current;
+ Document doc;
+
+ public NodeContentHandler(Node nd) {
+ current = (Element)nd;
+ doc = nd.getOwnerDocument();
+ }
+
+ public void characters(char[] ch, int start, int length) {
+ current.appendChild(doc.createTextNode(new String(ch, start,
length)));
+ }
+ public void startElement(String uri, String localName,
+ String qName, Attributes attributes) {
+ Element newEl = doc.createElementNS(uri, qName);
+ current.appendChild(newEl);
+ current = newEl;
+ for (int x = 0; x < attributes.getLength(); x++) {
+ current.setAttributeNS(attributes.getURI(x),
+ attributes.getQName(x),
+ attributes.getValue(x));
+ }
+ }
+ public void endElement(String uri, String localName, String qName) {
+ current = (Element)current.getParentNode();
+ }
+ }
+
+
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,12 @@
+package org.apache.tuscany.binding.celtix.handler.io;
+
+import java.io.ByteArrayOutputStream;
+
+/**
+ * Just to allow raw access to the byte[] to avoid a copy
+ */
+class RawByteArrayOutputStream extends ByteArrayOutputStream {
+ public byte[] getBytes() {
+ return buf;
+ }
+}
\ No newline at end of file
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,55 @@
+package org.apache.tuscany.binding.celtix.handler.io;
+
+import org.w3c.dom.Node;
+
+import commonj.sdo.helper.TypeHelper;
+
+import org.objectweb.celtix.bindings.DataBindingCallback.Mode;
+import org.objectweb.celtix.bindings.DataReader;
+import org.objectweb.celtix.bindings.DataWriter;
+import
org.objectweb.celtix.bus.bindings.AbstractWSDLOperationDataBindingCallback;
+import org.objectweb.celtix.bus.bindings.WSDLOperationInfo;
+
+public class SCADataBindingCallback extends
AbstractWSDLOperationDataBindingCallback {
+ TypeHelper typeHelper;
+ boolean hasInOut;
+
+ public SCADataBindingCallback(WSDLOperationInfo op, TypeHelper helper,
boolean inout) {
+ super(op);
+ typeHelper = helper;
+ hasInOut = inout;
+ }
+
+ public TypeHelper getTypeHelper() {
+ return typeHelper;
+ }
+ public boolean hasInOut() {
+ return hasInOut;
+ }
+
+ public Mode getMode() {
+ return Mode.PARTS;
+ }
+
+ public Class<?>[] getSupportedFormats() {
+ return new Class<?>[] {Node.class};
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> DataWriter<T> createWriter(Class<T> cls) {
+ if (cls == Node.class) {
+ return (DataWriter<T>)new NodeDataWriter(this);
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> DataReader<T> createReader(Class<T> cls) {
+ if (cls == Node.class) {
+ return (DataReader<T>)new NodeDataReader(this);
+ }
+ //REVISIT - need to figure out what to do with Faults
+ return null;
+ }
+
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,72 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * 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.celtix.loader;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.binding.celtix.assembly.WebServiceAssemblyFactory;
+import org.apache.tuscany.binding.celtix.assembly.WebServiceBinding;
+import
org.apache.tuscany.binding.celtix.assembly.impl.WebServiceAssemblyFactoryImpl;
+import org.apache.tuscany.common.resource.ResourceLoader;
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.loader.StAXElementLoader;
+import org.apache.tuscany.core.loader.StAXLoaderRegistry;
+import org.apache.tuscany.core.system.annotation.Autowire;
+
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+
+/**
+ * @version $Rev$ $Date$
+ */
[EMAIL PROTECTED]("MODULE")
+public class WebServiceBindingLoader implements
StAXElementLoader<WebServiceBinding> {
+ public static final QName BINDING_WS = new
QName("http://www.osoa.org/xmlns/sca/0.9", "binding.ws");
+
+ private static final WebServiceAssemblyFactory WS_FACTORY = new
WebServiceAssemblyFactoryImpl();
+
+ protected StAXLoaderRegistry registry;
+
+ @Autowire
+ public void setRegistry(StAXLoaderRegistry reg) {
+ this.registry = reg;
+ }
+
+ @Init(eager = true)
+ public void start() {
+ registry.registerLoader(BINDING_WS, this);
+ }
+
+ @Destroy
+ public void stop() {
+ registry.unregisterLoader(BINDING_WS, this);
+ }
+
+ public WebServiceBinding load(XMLStreamReader reader,
+ ResourceLoader resourceLoader)
+ throws XMLStreamException, ConfigurationLoadException {
+
+ WebServiceBinding binding = WS_FACTORY.createWebServiceBinding();
+ binding.setURI(reader.getAttributeValue(null, "uri"));
+ binding.setPortURI(reader.getAttributeValue(null, "port"));
+ return binding;
+ }
+}
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/loader/WebServiceBindingLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev,Date
Added:
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/resources/system.fragment
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/celtix/binding.celtix/src/main/resources/system.fragment?rev=395455&view=auto
==============================================================================
---
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/resources/system.fragment
(added)
+++
incubator/tuscany/sandbox/celtix/binding.celtix/src/main/resources/system.fragment
Wed Apr 19 17:57:44 2006
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ Copyright (c) 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.
+ -->
+<moduleFragment xmlns="http://www.osoa.org/xmlns/sca/0.9"
xmlns:v="http://www.osoa.org/xmlns/sca/values/0.9"
+ xmlns:system="http://org.apache.tuscany/xmlns/system/0.9"
+ name="org.apache.tuscany.binding.axis">
+
+ <component
name="org.apache.tuscany.binding.celtix.builder.ExternalWebServiceBuilder">
+ <system:implementation.system
class="org.apache.tuscany.binding.celtix.builder.ExternalWebServiceBuilder"/>
+ </component>
+
+ <component
name="org.apache.tuscany.binding.celtix.builder.ExternalWebServiceWireBuilder">
+ <system:implementation.system
class="org.apache.tuscany.binding.celtix.builder.ExternalWebServiceWireBuilder"/>
+ </component>
+
+ <component
name="org.apache.tuscany.binding.celtix.builder.WebServiceEntryPointBuilder">
+ <system:implementation.system
class="org.apache.tuscany.binding.celtix.builder.WebServiceEntryPointBuilder"/>
+ </component>
+
+ <component
name="org.apache.tuscany.binding.celtix.loader.WebServiceBindingLoaderr">
+ <system:implementation.system
class="org.apache.tuscany.binding.celtix.loader.WebServiceBindingLoader"/>
+ </component>
+
+</moduleFragment>