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>


Reply via email to