Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java (original) +++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java Thu May 29 10:24:18 2008 @@ -62,14 +62,13 @@ TransformationContext context); /** - * Set child element for the wrapper - * - * @param wrapper The wrapper - * @param i The index - * @param childElement The XSD element - * @param value The value of the child + * Populate the wrapper element with the child objects + * @param wrapper + * @param childElements + * @param childObjects + * @param context */ - void setChild(T wrapper, int i, ElementInfo childElement, Object value); + public void setChildren(T wrapper, List<ElementInfo> childElements, Object[] childObjects, TransformationContext context); /** * Get a list of child elements from the wrapper
Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java (original) +++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/BaseDataBinding.java Thu May 29 10:24:18 2008 @@ -23,6 +23,7 @@ import org.apache.tuscany.sca.databinding.DataBinding; import org.apache.tuscany.sca.databinding.SimpleTypeMapper; import org.apache.tuscany.sca.databinding.WrapperHandler; +import org.apache.tuscany.sca.databinding.XMLTypeHelper; import org.apache.tuscany.sca.interfacedef.DataType; import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl; import org.apache.tuscany.sca.interfacedef.util.XMLType; @@ -121,8 +122,8 @@ return new SimpleTypeMapperImpl(); } - public Class getXMLTypeHelperClass() { - return JAXBTypeHelper.class; + public XMLTypeHelper getXMLTypeHelper() { + return null; } public String[] getAliases() { Modified: incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java (original) +++ incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java Thu May 29 10:24:18 2008 @@ -55,6 +55,15 @@ } } + public void setChildren(Node wrapper, + List<ElementInfo> childElements, + Object[] childObjects, + TransformationContext context) { + for (int i = 0; i < childElements.size(); i++) { + setChild(wrapper, i, childElements.get(i), childObjects[i]); + } + + } public void setChild(Node wrapper, int i, ElementInfo childElement, Object value) { Node node = (Node)value; if (node.getNodeType() == Node.DOCUMENT_NODE) { Modified: incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java (original) +++ incubator/tuscany/java/sca/modules/interface-wsdl-java2wsdl/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/interface2wsdl/Interface2WSDLGenerator.java Thu May 29 10:24:18 2008 @@ -19,20 +19,18 @@ package org.apache.tuscany.sca.interfacedef.wsdl.interface2wsdl; -import java.io.PrintWriter; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import javax.wsdl.Binding; import javax.wsdl.BindingOperation; import javax.wsdl.Definition; -import javax.wsdl.Input; import javax.wsdl.Fault; +import javax.wsdl.Input; import javax.wsdl.Message; import javax.wsdl.OperationType; import javax.wsdl.Output; @@ -41,9 +39,7 @@ import javax.wsdl.Types; import javax.wsdl.WSDLException; import javax.wsdl.extensions.schema.Schema; -import javax.wsdl.extensions.schema.SchemaImport; import javax.wsdl.factory.WSDLFactory; -import javax.xml.bind.JAXBContext; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -52,7 +48,7 @@ import org.apache.tuscany.sca.databinding.DataBinding; import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; import org.apache.tuscany.sca.databinding.XMLTypeHelper; -import org.apache.tuscany.sca.databinding.jaxb.JAXBContextHelper; +import org.apache.tuscany.sca.databinding.jaxb.JAXBTypeHelper; import org.apache.tuscany.sca.interfacedef.DataType; import org.apache.tuscany.sca.interfacedef.Interface; import org.apache.tuscany.sca.interfacedef.Operation; @@ -61,31 +57,18 @@ import org.apache.tuscany.sca.interfacedef.util.ElementInfo; import org.apache.tuscany.sca.interfacedef.util.JavaXMLMapper; import org.apache.tuscany.sca.interfacedef.util.TypeInfo; -import org.apache.tuscany.sca.interfacedef.util.XMLType; import org.apache.tuscany.sca.interfacedef.util.WrapperInfo; +import org.apache.tuscany.sca.interfacedef.util.XMLType; import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition; import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.xsd.XSDefinition; import org.apache.tuscany.sca.xsd.XSDFactory; - +import org.apache.tuscany.sca.xsd.XSDefinition; import org.apache.ws.commons.schema.XmlSchema; import org.apache.ws.commons.schema.XmlSchemaCollection; -import org.apache.ws.commons.schema.XmlSchemaComplexType; -import org.apache.ws.commons.schema.XmlSchemaElement; import org.apache.ws.commons.schema.XmlSchemaException; -import org.apache.ws.commons.schema.XmlSchemaForm; -import org.apache.ws.commons.schema.XmlSchemaSequence; -import org.apache.ws.commons.schema.XmlSchemaSerializer; -import org.apache.ws.commons.schema.XmlSchemaType; import org.apache.ws.commons.schema.utils.NamespaceMap; import org.w3c.dom.Document; -import org.w3c.dom.DOMImplementation; import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.ls.LSSerializer; /** * @version $Rev$ $Date$ @@ -510,23 +493,9 @@ if (dataBinding == null) { throw new RuntimeException("no data binding for " + db); } - XMLTypeHelper helper = helpers.get(db); + XMLTypeHelper helper = dataBinding.getXMLTypeHelper(); if (helper == null) { - Class helperClass = dataBinding.getXMLTypeHelperClass(); - for (XMLTypeHelper xth : helpers.values()) { - if (xth.getClass() == helperClass) { - helper = xth; - break; - } - } - if (helper == null) { - try { - helper = (XMLTypeHelper)helperClass.newInstance(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - helpers.put(db, helper); + helper = new JAXBTypeHelper(); } TypeInfo typeInfo = helper.getTypeInfo(javaType.isArray() ? javaType.getComponentType() : javaType, dataType.getLogical()); Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java (original) +++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/Operation.java Thu May 29 10:24:18 2008 @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; + import javax.xml.namespace.QName; import org.apache.tuscany.sca.interfacedef.util.WrapperInfo; @@ -153,15 +154,19 @@ void setWrapperStyle(boolean wrapperStyle); /** + * @deprecated This should be the WrapperInfo.getDataBinding() * Get the databinding for the operation * @return */ + @Deprecated String getDataBinding(); /** + * @deprecated This should be the WrapperInfo.setDataBinding() * Set the databinding for the operation * @param dataBinding */ + @Deprecated void setDataBinding(String dataBinding); /** Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java (original) +++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/impl/OperationImpl.java Thu May 29 10:24:18 2008 @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + import javax.xml.namespace.QName; import org.apache.tuscany.sca.interfacedef.ConversationSequence; @@ -51,7 +52,6 @@ private boolean nonBlocking; private boolean wrapperStyle; private WrapperInfo wrapper; - private String dataBinding; private boolean dynamic; private Map<QName, List<DataType<XMLType>>> faultBeans; @@ -264,11 +264,13 @@ } public String getDataBinding() { - return dataBinding; + return wrapper != null ? wrapper.getDataBinding() : null; } public void setDataBinding(String dataBinding) { - this.dataBinding = dataBinding; + if (wrapper != null) { + wrapper.setDataBinding(dataBinding); + } } public boolean isDynamic() { Modified: incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java?rev=661410&r1=661409&r2=661410&view=diff ============================================================================== --- incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java (original) +++ incubator/tuscany/java/sca/modules/interface/src/main/java/org/apache/tuscany/sca/interfacedef/util/WrapperInfo.java Thu May 29 10:24:18 2008 @@ -56,12 +56,20 @@ private List<ElementInfo> outputChildElements; + // The data type of the unwrapped input child elements private DataType<List<DataType>> unwrappedInputType; + // The data type of the unwrapped output child element (we only supports one child) private DataType<XMLType> unwrappedOutputType; + // The data for the input/output wrappers private String dataBinding; + // The data type for the input (request) wrapper bean + private DataType<XMLType> inputWrapperType; + // The data type for the output (response) wrapper bean + private DataType<XMLType> outputWrapperType; + private Class<?> inputWrapperClass; private Class<?> outputWrapperClass; @@ -166,4 +174,28 @@ public void setOutputWrapperClass(Class<?> outputWrapperClass) { this.outputWrapperClass = outputWrapperClass; } + + public String getDataBinding() { + return dataBinding; + } + + public void setDataBinding(String dataBinding) { + this.dataBinding = dataBinding; + } + + public DataType<XMLType> getInputWrapperType() { + return inputWrapperType; + } + + public void setInputWrapperType(DataType<XMLType> inputWrapperType) { + this.inputWrapperType = inputWrapperType; + } + + public DataType<XMLType> getOutputWrapperType() { + return outputWrapperType; + } + + public void setOutputWrapperType(DataType<XMLType> outputWrapperType) { + this.outputWrapperType = outputWrapperType; + } }
