diff options
Diffstat (limited to 'branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io')
5 files changed, 0 insertions, 529 deletions
diff --git a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java b/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java deleted file mode 100644 index d1b13f6e17..0000000000 --- a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataReader.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tuscany.binding.celtix.handler.io; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -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.databinding.sdo.SDOXMLHelper; -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) { - try { - byte bytes[] = getNodeBytes(input); - Object os[] = SDOXMLHelper.toObjects(callback.getResourceClassLoader(), - callback.getTypeHelper(), bytes, false); - return os[0]; - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new WebServiceException(e); - } - - } - - 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 { - if (isOutBound) { - objCtx.setReturn(os[0]); - } else { - objCtx.setMessageObjects(os); - } - } - } 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 byte[] getNodeBytes(Node node) - throws ClassCastException, ClassNotFoundException, - InstantiationException, IllegalAccessException { - - //This is also a hack, the JDK should already have this set, but it doesn't - DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); - if (registry == null) { - System.setProperty(DOMImplementationRegistry.PROPERTY, - "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); - registry = DOMImplementationRegistry.newInstance(); - } - DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); - if (impl == null) { - System.setProperty(DOMImplementationRegistry.PROPERTY, - "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); - registry = DOMImplementationRegistry.newInstance(); - impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); - } - LSOutput output = impl.createLSOutput(); - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - output.setByteStream(bout); - LSSerializer writer = impl.createLSSerializer(); - writer.write(node, output); - - return bout.toByteArray(); - } - - private InputStream getNodeStream(Node node) - throws ClassCastException, ClassNotFoundException, - InstantiationException, IllegalAccessException { - - DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); - if (registry == null) { - //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"); - registry = DOMImplementationRegistry.newInstance(); - } - DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); - if (impl == null) { - System.setProperty(DOMImplementationRegistry.PROPERTY, - "com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl"); - registry = DOMImplementationRegistry.newInstance(); - 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()); - } - -} diff --git a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java b/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java deleted file mode 100644 index 27c2276c2a..0000000000 --- a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/NodeDataWriter.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tuscany.binding.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.databinding.sdo.SDOXMLHelper; -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) { - byte bytes[] = SDOXMLHelper.toXMLBytes( - callback.getResourceClassLoader(), - callback.getTypeHelper(), - new Object[] {obj}, - elName, - false); - ByteArrayInputStream bin = new ByteArrayInputStream(bytes); - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - try { - SAXParser parser = factory.newSAXParser(); - parser.parse(bin, new NodeContentHandler(output)); - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new WebServiceException(e); - } - - } - - 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(), - isOutbound ? objCtx.getReturn() : null, - 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 ret, - 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(); - int offset = 0; - if (ret != null) { - dataObject.set(0, ret); - offset = 1; - } - for (int i = offset; i < ips.size(); i++) { - if (os[i - offset] instanceof Holder) { - Holder<?> holder = (Holder<?>)os[i - offset]; - dataObject.set(i, holder.value); - } else { - dataObject.set(i, os[i - offset]); - } - } - return dataObject; - } - - private class NodeContentHandler extends DefaultHandler { - Node current; - Document doc; - - public NodeContentHandler(Node nd) { - doc = nd.getOwnerDocument(); - if (doc == null && nd instanceof Document) { - doc = (Document)nd; - } - current = nd; - } - - 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++) { - newEl.setAttributeNS(attributes.getURI(x), - attributes.getQName(x), - attributes.getValue(x)); - } - } - - public void endElement(String uri, String localName, String qName) { - current = current.getParentNode(); - } - } - - -} diff --git a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java b/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java deleted file mode 100644 index 902a3e618c..0000000000 --- a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/RawByteArrayOutputStream.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tuscany.binding.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; - } -} diff --git a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java b/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java deleted file mode 100644 index 00dc403f2c..0000000000 --- a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCADataBindingCallback.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tuscany.binding.celtix.handler.io; - - -import org.w3c.dom.Node; -import commonj.sdo.helper.TypeHelper; - -import org.apache.tuscany.common.resource.ResourceLoader; -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; -import org.objectweb.celtix.context.ObjectMessageContext; - -public class SCADataBindingCallback extends AbstractWSDLOperationDataBindingCallback { - - protected TypeHelper typeHelper; - protected boolean hasInOut; - protected ResourceLoader loader; - - public SCADataBindingCallback(WSDLOperationInfo op, - TypeHelper helper, - ResourceLoader l, - boolean inout) { - super(op); - typeHelper = helper; - hasInOut = inout; - loader = l; - } - - public ResourceLoader getResourceLoader() { - return loader; - } - public ClassLoader getResourceClassLoader() { - return loader.getClassLoader(); - } - - 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; - } - - public void initObjectContext(ObjectMessageContext octx) { - //REVISIT - is this even used? - } - - -} diff --git a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java b/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java deleted file mode 100644 index 5926e066c2..0000000000 --- a/branches/java-post-M1/sca/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/handler/io/SCAServerDataBindingCallback.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tuscany.binding.celtix.handler.io; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import commonj.sdo.helper.TypeHelper; - -import org.apache.tuscany.common.resource.ResourceLoader; -import org.objectweb.celtix.bindings.ServerDataBindingCallback; -import org.objectweb.celtix.bus.bindings.WSDLOperationInfo; -import org.objectweb.celtix.context.ObjectMessageContext; - -public class SCAServerDataBindingCallback extends SCADataBindingCallback - implements ServerDataBindingCallback { - Method method; - Object targetObject; - - public SCAServerDataBindingCallback(WSDLOperationInfo op, TypeHelper helper, - ResourceLoader l, - boolean inout, Method meth, Object target) { - super(op, helper, l, inout); - method = meth; - targetObject = target; - } - - - public void invoke(ObjectMessageContext octx) throws InvocationTargetException { - Object ret; - try { - ret = method.invoke(targetObject, octx.getMessageObjects()); - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new InvocationTargetException(e); - } - octx.setReturn(ret); - } - - public void initObjectContext(ObjectMessageContext octx) { - Object o[] = new Object[method.getParameterTypes().length]; - //REVIST - holders? - octx.setMessageObjects(o); - } - -} |