You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/09/17 08:19:50 UTC
svn commit: r576267 - in /incubator/tuscany/branches/sca-java-1.0:
itest/osgi-implementation/src/test/java/helloworld/
itest/osgi-implementation/src/test/java/helloworld/ws/ modules/
modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding...
Author: rfeng
Date: Sun Sep 16 23:19:48 2007
New Revision: 576267
URL: http://svn.apache.org/viewvc?rev=576267&view=rev
Log:
Merge the following changes from trunk:
* Improve the databinding for better wrapping/unwrapping to bring up the XQuery/SDO/WS integration
* Apply the patch for TUSCANY-1536 and bring up the quote-xquery sample
Added:
incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCaseFIXME.java
- copied, changed from r576261, incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCase.java
Removed:
incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/HelloWorldTestCase.java
incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/PassByRefTestCase.java
incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCase.java
incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/availquoteprovider.wsdl
Modified:
incubator/tuscany/branches/sca-java-1.0/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBWrapperHandler.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBWrapperHandlerTestCase.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/pom.xml
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java
incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java
incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java
incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryInvoker.java
incubator/tuscany/branches/sca-java-1.0/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
incubator/tuscany/branches/sca-java-1.0/modules/pom.xml
incubator/tuscany/branches/sca-java-1.0/samples/pom.xml
incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/pom.xml
incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/quotejoin.wsdl
incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/xqueryquotews.composite
Copied: incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCaseFIXME.java (from r576261, incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCaseFIXME.java?p2=incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCaseFIXME.java&p1=incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCase.java&r1=576261&r2=576267&rev=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/itest/osgi-implementation/src/test/java/helloworld/ws/HelloWorldTestCaseFIXME.java Sun Sep 16 23:19:48 2007
@@ -27,7 +27,7 @@
import util.OSGiTestUtil;
-public class HelloWorldTestCase extends TestCase {
+public class HelloWorldTestCaseFIXME extends TestCase {
private SCADomain scaDomain;
private HelloWorld helloWorld;
Modified: incubator/tuscany/branches/sca-java-1.0/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceInOutSyncMessageReceiver.java Sun Sep 16 23:19:48 2007
@@ -19,6 +19,8 @@
package org.apache.tuscany.sca.binding.ws.axis2;
import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -30,7 +32,8 @@
import org.apache.tuscany.sca.interfacedef.util.FaultException;
public class Axis2ServiceInOutSyncMessageReceiver extends AbstractInOutSyncMessageReceiver {
-
+ private static final Logger logger = Logger.getLogger(Axis2ServiceInOutSyncMessageReceiver.class.getName());
+
protected Operation operation;
private Axis2ServiceProvider provider;
@@ -63,6 +66,7 @@
} catch (InvocationTargetException e) {
Throwable t = e.getCause();
+ logger.log(Level.SEVERE, e.getMessage(), t);
if (t instanceof FaultException && ((FaultException)t).getFaultInfo() instanceof OMElement) {
OMElement faultDetail = (OMElement)((FaultException)t).getFaultInfo();
inMC.setProperty(Constants.FAULT_NAME, faultDetail.getQName().getLocalPart());
@@ -73,7 +77,8 @@
throw AxisFault.makeFault((Exception)t);
}
throw new RuntimeException(e);
- } catch (Exception e) {
+ } catch (Throwable e) {
+ logger.log(Level.SEVERE, e.getMessage(), e);
throw AxisFault.makeFault(e);
}
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/processor/DataBindingJavaInterfaceProcessor.java Sun Sep 16 23:19:48 2007
@@ -27,6 +27,7 @@
import java.util.Map;
import org.apache.tuscany.sca.databinding.javabeans.JavaBeansDataBinding;
+import org.apache.tuscany.sca.databinding.javabeans.SimpleJavaDataBinding;
import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
import org.apache.tuscany.sca.databinding.annotation.DataBinding;
import org.apache.tuscany.sca.interfacedef.DataType;
@@ -158,7 +159,8 @@
if (d != null) {
String dataBinding = d.getDataBinding();
// Assumes JavaBeans DB is default
- if (dataBinding != null && !dataBinding.equals(JavaBeansDataBinding.NAME)) {
+ if (dataBinding != null && !dataBinding.equals(JavaBeansDataBinding.NAME)
+ && !dataBinding.equals(SimpleJavaDataBinding.NAME)) {
if (nonDefaultDataBindingName != null) {
if (!nonDefaultDataBindingName.equals(dataBinding)) {
// We've seen two different non-default DBs, e.g. SDO and JAXB
Modified: incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Input2InputTransformer.java Sun Sep 16 23:19:48 2007
@@ -20,6 +20,7 @@
package org.apache.tuscany.sca.core.databinding.transformers;
import java.util.List;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.databinding.DataBinding;
import org.apache.tuscany.sca.databinding.Mediator;
@@ -31,7 +32,6 @@
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
@@ -45,6 +45,7 @@
@Service(Transformer.class)
public class Input2InputTransformer extends BaseTransformer<Object[], Object[]> implements
PullTransformer<Object[], Object[]> {
+ private static final Logger logger = Logger.getLogger(Input2InputTransformer.class.getName());
protected Mediator mediator;
@@ -102,19 +103,14 @@
WrapperHandler sourceWrapperHandler = null;
String sourceDataBinding = getDataBinding(sourceOp);
- if (sourceWrapped) {
- sourceWrapperHandler = getWrapperHandler(sourceDataBinding, true);
- }
+ sourceWrapperHandler = getWrapperHandler(sourceDataBinding, sourceWrapped);
DataType<List<DataType>> targetType = context.getTargetDataType();
Operation targetOp = (Operation)context.getTargetOperation();
boolean targetWrapped = targetOp != null && targetOp.isWrapperStyle();
WrapperHandler targetWrapperHandler = null;
- String targetDataBinding = null;
- if (targetWrapped) {
- targetDataBinding = getDataBinding(targetOp);
- targetWrapperHandler = getWrapperHandler(targetDataBinding, true);
- }
+ String targetDataBinding = getDataBinding(targetOp);
+ targetWrapperHandler = getWrapperHandler(targetDataBinding, targetWrapped);
if ((!sourceWrapped) && targetWrapped) {
// Unwrapped --> Wrapped
@@ -123,12 +119,23 @@
// If the source can be wrapped, wrapped it first
if (sourceWrapperHandler != null) {
- Object sourceWrapper = sourceWrapperHandler.create(wrapperElement, context);
- for (int i = 0; i < source.length; i++) {
- ElementInfo argElement = wrapper.getInputChildElements().get(i);
- sourceWrapperHandler.setChild(sourceWrapper, i, argElement, source[0]);
+ DataType sourceWrapperType =
+ sourceWrapperHandler.getWrapperType(wrapperElement, wrapper.getInputChildElements(), context);
+ if (sourceWrapperType != null) {
+ Object sourceWrapper = sourceWrapperHandler.create(wrapperElement, context);
+ if (sourceWrapper != null) {
+ for (int i = 0; i < source.length; i++) {
+ ElementInfo argElement = wrapper.getInputChildElements().get(i);
+ sourceWrapperHandler.setChild(sourceWrapper, i, argElement, source[i]);
+ }
+ Object targetWrapper =
+ mediator.mediate(sourceWrapper, sourceWrapperType, targetType.getLogical().get(0), context
+ .getMetadata());
+ return new Object[] {targetWrapper};
+ }
}
}
+ // Fall back to child by child transformation
Object targetWrapper = targetWrapperHandler.create(wrapperElement, context);
if (source == null) {
return new Object[] {targetWrapper};
@@ -143,43 +150,45 @@
targetWrapperHandler.setChild(targetWrapper, i, argElement, child);
}
return new Object[] {targetWrapper};
+
} else if (sourceWrapped && (!targetWrapped)) {
// Wrapped to Unwrapped
Object sourceWrapper = source[0];
- // List<ElementInfo> childElements =
- // sourceOp.getWrapper().getInputChildElements();
Object[] target = null;
- targetDataBinding = getDataBinding(targetOp);
- targetWrapperHandler = getWrapperHandler(targetDataBinding, false);
+ List<ElementInfo> childElements = sourceOp.getWrapper().getInputChildElements();
if (targetWrapperHandler != null) {
ElementInfo wrapperElement = sourceOp.getWrapper().getInputWrapperElement();
- // Object targetWrapper =
- // targetWrapperHandler.create(wrapperElement, context);
- DataType<XMLType> targetWrapperType = new DataTypeImpl<XMLType>(targetDataBinding, Object.class,
- new XMLType(wrapperElement));
- Object targetWrapper = mediator.mediate(sourceWrapper,
- sourceType.getLogical().get(0),
- targetWrapperType,
- context.getMetadata());
- target = targetWrapperHandler.getChildren(targetWrapper).toArray();
- } else {
- Object[] sourceChildren = sourceWrapperHandler.getChildren(sourceWrapper).toArray();
- target = new Object[sourceChildren.length];
- for (int i = 0; i < sourceChildren.length; i++) {
- DataType<XMLType> childType = sourceOp.getWrapper().getUnwrappedInputType().getLogical().get(i);
- target[i] = mediator.mediate(sourceChildren[i], childType, targetType.getLogical().get(i), context
- .getMetadata());
+ // FIXME: This is a workaround for the wsdless support as it passes in child elements
+ // under the wrapper that only matches by position
+ if (sourceWrapperHandler.isInstance(sourceWrapper, wrapperElement, childElements, context)) {
+ DataType targetWrapperType =
+ targetWrapperHandler.getWrapperType(wrapperElement, childElements, context);
+ if (targetWrapperType != null) {
+ Object targetWrapper =
+ mediator.mediate(sourceWrapper, sourceType.getLogical().get(0), targetWrapperType, context
+ .getMetadata());
+ target = targetWrapperHandler.getChildren(targetWrapper, childElements, context).toArray();
+ return target;
+ }
}
}
+ Object[] sourceChildren = sourceWrapperHandler.getChildren(sourceWrapper, childElements, context).toArray();
+ target = new Object[sourceChildren.length];
+ for (int i = 0; i < sourceChildren.length; i++) {
+ DataType<XMLType> childType = sourceOp.getWrapper().getUnwrappedInputType().getLogical().get(i);
+ target[i] =
+ mediator.mediate(sourceChildren[i], childType, targetType.getLogical().get(i), context
+ .getMetadata());
+ }
return target;
} else {
- // Assuming wrapper to wrapper conversion can be handled here as
- // well
+ // Assuming wrapper to wrapper conversion can be handled here as well
Object[] newArgs = new Object[source.length];
for (int i = 0; i < source.length; i++) {
- Object child = mediator.mediate(source[i], sourceType.getLogical().get(i), targetType.getLogical()
- .get(i), context.getMetadata());
+ Object child =
+ mediator.mediate(source[i], sourceType.getLogical().get(i), targetType.getLogical().get(i), context
+ .getMetadata());
newArgs[i] = child;
}
return newArgs;
Modified: incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/core-databinding/src/main/java/org/apache/tuscany/sca/core/databinding/transformers/Output2OutputTransformer.java Sun Sep 16 23:19:48 2007
@@ -30,7 +30,6 @@
import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
import org.apache.tuscany.sca.interfacedef.util.WrapperInfo;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
@@ -118,25 +117,45 @@
DataType<DataType> sourceType = context.getSourceDataType();
Operation sourceOp = context.getSourceOperation();
boolean sourceWrapped = sourceOp != null && sourceOp.isWrapperStyle();
+
WrapperHandler sourceWrapperHandler = null;
- if (sourceWrapped) {
- sourceWrapperHandler = getWrapperHandler(getDataBinding(sourceOp), true);
- }
+ String sourceDataBinding = getDataBinding(sourceOp);
+ sourceWrapperHandler = getWrapperHandler(sourceDataBinding, sourceWrapped);
DataType<DataType> targetType = context.getTargetDataType();
- Operation targetOp = context.getTargetOperation();
+ Operation targetOp = (Operation)context.getTargetOperation();
boolean targetWrapped = targetOp != null && targetOp.isWrapperStyle();
WrapperHandler targetWrapperHandler = null;
- if (targetWrapped) {
- targetWrapperHandler = getWrapperHandler(getDataBinding(targetOp), true);
- }
+ String targetDataBinding = getDataBinding(targetOp);
+ targetWrapperHandler = getWrapperHandler(targetDataBinding, targetWrapped);
if ((!sourceWrapped) && targetWrapped) {
// Unwrapped --> Wrapped
WrapperInfo wrapper = targetOp.getWrapper();
+ ElementInfo wrapperElement = wrapper.getOutputWrapperElement();
+ List<ElementInfo> childElements = wrapper.getOutputChildElements();
+
+ // If the source can be wrapped, wrapped it first
+ if (sourceWrapperHandler != null) {
+ DataType sourceWrapperType =
+ sourceWrapperHandler.getWrapperType(wrapperElement, childElements, context);
+ if (sourceWrapperType != null) {
+ Object sourceWrapper = sourceWrapperHandler.create(wrapperElement, context);
+ if (sourceWrapper != null) {
+ if (!childElements.isEmpty()) {
+ // Set the return value
+ ElementInfo returnElement = wrapper.getOutputChildElements().get(0);
+ sourceWrapperHandler.setChild(sourceWrapper, 0, returnElement, response);
+ }
+ Object targetWrapper =
+ mediator.mediate(sourceWrapper, sourceWrapperType, targetType.getLogical(), context
+ .getMetadata());
+ return targetWrapper;
+ }
+ }
+ }
Object targetWrapper = targetWrapperHandler.create(wrapper.getOutputWrapperElement(), context);
- List<ElementInfo> childElements = wrapper.getOutputChildElements();
if (childElements.isEmpty()) {
// void output
return targetWrapper;
@@ -155,24 +174,25 @@
// The void output
return null;
}
- targetWrapperHandler = getWrapperHandler(getDataBinding(targetOp), false);
if (targetWrapperHandler != null) {
ElementInfo wrapperElement = sourceOp.getWrapper().getOutputWrapperElement();
- // Object targetWrapper =
- // targetWrapperHandler.create(wrapperElement, context);
-
- // use operation DB not output type DB
- DataType<XMLType> targetWrapperType = new DataTypeImpl<XMLType>(getDataBinding(targetOp), Object.class, new XMLType(wrapperElement));
- Object targetWrapper = mediator.mediate(sourceWrapper,
- sourceType.getLogical(),
- targetWrapperType,
- context.getMetadata());
- return targetWrapperHandler.getChildren(targetWrapper).get(0);
- } else {
- Object child = sourceWrapperHandler.getChildren(sourceWrapper).get(0);
- DataType<?> childType = sourceOp.getWrapper().getUnwrappedOutputType();
- return mediator.mediate(child, childType, targetType.getLogical(), context.getMetadata());
+
+ // FIXME: This is a workaround for the wsdless support as it passes in child elements
+ // under the wrapper that only matches by position
+ if (sourceWrapperHandler.isInstance(sourceWrapper, wrapperElement, childElements, context)) {
+ DataType targetWrapperType =
+ targetWrapperHandler.getWrapperType(wrapperElement, childElements, context);
+ if (targetWrapperType != null) {
+ Object targetWrapper =
+ mediator.mediate(sourceWrapper, sourceType.getLogical(), targetWrapperType, context
+ .getMetadata());
+ return targetWrapperHandler.getChildren(targetWrapper, childElements, context).get(0);
+ }
+ }
}
+ Object child = sourceWrapperHandler.getChildren(sourceWrapper, childElements, context).get(0);
+ DataType<?> childType = sourceOp.getWrapper().getUnwrappedOutputType();
+ return mediator.mediate(child, childType, targetType.getLogical(), context.getMetadata());
} else {
// FIXME: Do we want to handle wrapped to wrapped?
return mediator.mediate(response, sourceType.getLogical(), targetType.getLogical(), context
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java Sun Sep 16 23:19:48 2007
@@ -20,18 +20,25 @@
package org.apache.tuscany.sca.databinding.axiom;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.WrapperHandler;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
+import org.apache.tuscany.sca.interfacedef.util.TypeInfo;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* OMElement wrapper handler implementation
@@ -59,12 +66,75 @@
wrapper.addChild((OMElement)value);
}
- public List getChildren(OMElement wrapper) {
+ public List getChildren(OMElement wrapper, List<ElementInfo> childElements, TransformationContext context) {
List<Object> elements = new ArrayList<Object>();
- for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
- elements.add(i.next());
+ int i = 0;
+ for (ElementInfo e : childElements) {
+ elements.add(getChild(wrapper, e, i, context));
+ i++;
}
return elements;
}
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#getWrapperType(org.apache.tuscany.sca.interfacedef.util.ElementInfo, List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context) {
+ DataType<XMLType> wrapperType =
+ new DataTypeImpl<XMLType>(AxiomDataBinding.NAME, OMElement.class, new XMLType(element));
+ return wrapperType;
+ }
+
+ public boolean isInstance(Object wrapperObj,
+ ElementInfo element,
+ List<ElementInfo> childElements,
+ TransformationContext context) {
+ OMElement wrapper = (OMElement)wrapperObj;
+ if (!element.getQName().equals(wrapper.getQName())) {
+ return false;
+ }
+ Set<QName> names = new HashSet<QName>();
+ for (ElementInfo e : childElements) {
+ names.add(e.getQName());
+ }
+ for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
+ OMElement child = (OMElement)i.next();
+ if (!names.contains(child.getQName())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static final QName XSI_TYPE_QNAME = new QName("http://www.w3.org/2001/XMLSchema-instance", "type", "xsi");
+
+ public Object getChild(OMElement wrapper, ElementInfo childElement, int index, TransformationContext context) {
+ int pos = 0;
+ for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
+ OMElement e = (OMElement)i.next();
+ if (pos == index) {
+ TypeInfo type = childElement.getType();
+ if (type != null) {
+ OMAttribute attr = e.getAttribute(XSI_TYPE_QNAME);
+ if (attr == null) {
+ OMNamespace ns =
+ e.getOMFactory().createOMNamespace(type.getQName().getNamespaceURI(), "_typens_");
+ e.declareNamespace(ns);
+ OMNamespace xsiNS =
+ e.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(),
+ XSI_TYPE_QNAME.getPrefix());
+ e.declareNamespace(xsiNS);
+ attr =
+ e.getOMFactory().createOMAttribute("type",
+ xsiNS,
+ "_typens_:" + type.getQName().getLocalPart());
+ e.addAttribute(attr);
+ }
+ }
+ return e;
+ }
+ pos++;
+ }
+ return null;
+ }
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBWrapperHandler.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBWrapperHandler.java Sun Sep 16 23:19:48 2007
@@ -32,7 +32,10 @@
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.TransformationException;
import org.apache.tuscany.sca.databinding.WrapperHandler;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
/**
* JAXB WrapperHandler implementation
@@ -100,9 +103,9 @@
}
/**
- * @see org.apache.tuscany.sca.databinding.WrapperHandler#getChildren(java.lang.Object)
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#getChildren(java.lang.Object, List, TransformationContext)
*/
- public List getChildren(JAXBElement<?> wrapper) {
+ public List getChildren(JAXBElement<?> wrapper, List<ElementInfo> childElements, TransformationContext context) {
Object wrapperValue = wrapper.getValue();
Class<?> wrapperClass = wrapperValue.getClass();
@@ -121,4 +124,52 @@
return elements;
}
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#getWrapperType(org.apache.tuscany.sca.interfacedef.util.ElementInfo, List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context) {
+ try {
+ // FIXME: How do we map the global element to a factory?
+ String packageName = null;
+ String factoryClassName = packageName + ".ObjectFactory";
+ ClassLoader classLoader = context != null ? context.getClassLoader() : null;
+ if (classLoader == null) {
+ //FIXME Understand why we need this, the classloader should be passed in
+ classLoader = Thread.currentThread().getContextClassLoader();
+ }
+ Class<?> factoryClass = Class.forName(factoryClassName, true, classLoader);
+ assert factoryClass.isAnnotationPresent(XmlRegistry.class);
+ QName elementName = element.getQName();
+ Method method = null;
+ for (Method m : factoryClass.getMethods()) {
+ XmlElementDecl xmlElement = m.getAnnotation(XmlElementDecl.class);
+ QName name = new QName(xmlElement.namespace(), xmlElement.name());
+ if (xmlElement != null && name.equals(elementName)) {
+ method = m;
+ break;
+ }
+ }
+ if (method != null) {
+ Class typeClass = method.getParameterTypes()[0];
+ DataType<XMLType> wrapperType =
+ new DataTypeImpl<XMLType>(JAXBDataBinding.NAME, typeClass, new XMLType(element));
+ return wrapperType;
+ }
+
+ return null;
+ } catch (Throwable e) {
+ return null;
+ }
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#isInstance(java.lang.Object, org.apache.tuscany.sca.interfacedef.util.ElementInfo, java.util.List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public boolean isInstance(Object wrapper,
+ ElementInfo element,
+ List<ElementInfo> childElements,
+ TransformationContext context) {
+ // TODO: Implement the logic
+ return true;
+ }
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBWrapperHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBWrapperHandlerTestCase.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBWrapperHandlerTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBWrapperHandlerTestCase.java Sun Sep 16 23:19:48 2007
@@ -63,7 +63,7 @@
PurchaseOrderType po = factory.createPurchaseOrderType();
po.setComment("Comment");
JAXBElement<PurchaseOrderType> wrapper = factory.createPurchaseOrder(po);
- List children = handler.getChildren(wrapper);
+ List children = handler.getChildren(wrapper, null, null);
assertNotNull(children);
assertEquals(4, children.size());
assertEquals("Comment", children.get(2));
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/pom.xml?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/pom.xml Sun Sep 16 23:19:48 2007
@@ -44,13 +44,13 @@
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
- <version>8.9</version>
+ <version>8.7</version>
</dependency>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon-dom</artifactId>
- <version>8.9</version>
+ <version>8.7</version>
</dependency>
<dependency>
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java Sun Sep 16 23:19:48 2007
@@ -21,6 +21,7 @@
import javax.xml.transform.dom.DOMSource;
import net.sf.saxon.Configuration;
+import net.sf.saxon.event.Builder;
import net.sf.saxon.om.DocumentInfo;
import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.trans.XPathException;
@@ -47,7 +48,7 @@
}
DocumentInfo docInfo = null;
try {
- docInfo = configuration.buildDocument(new DOMSource(source));
+ docInfo = (DocumentInfo)Builder.build(new DOMSource(source), null, configuration);
} catch (XPathException e) {
throw new TransformationException(e);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2NodeTransformer.java Sun Sep 16 23:19:48 2007
@@ -45,7 +45,7 @@
Properties props = new Properties();
props.setProperty(OutputKeys.METHOD, "xml");
props.setProperty(OutputKeys.INDENT, "yes");
- QueryResult.serialize(source, destination, props);
+ QueryResult.serialize(source, destination, props, source.getConfiguration());
} catch (Exception e) {
throw new TransformationException(e);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/SimpleType2ValueTransformer.java Sun Sep 16 23:19:48 2007
@@ -64,13 +64,13 @@
public Value transform(Object source, TransformationContext context) {
Value result = null;
if (source instanceof Integer) {
- result = IntegerValue.makeIntegerValue(BigInteger.valueOf(((Integer)source)));
+ result = new IntegerValue((Integer)source);
} else if (source instanceof Long) {
- result = IntegerValue.makeIntegerValue(BigInteger.valueOf(((Long)source)));
+ result = new IntegerValue((Long)source);
} else if (source instanceof Short) {
- result = IntegerValue.makeIntegerValue(BigInteger.valueOf(((Short)source)));
+ result = new IntegerValue((Short)source);
} else if (source instanceof Byte) {
- result = IntegerValue.makeIntegerValue(BigInteger.valueOf(((Byte)source)));
+ result = new IntegerValue((Byte)source);
} else if (source instanceof Double) {
result = new DoubleValue((Double)source);
} else if (source instanceof Float) {
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2ObjectTransformer.java Sun Sep 16 23:19:48 2007
@@ -35,7 +35,7 @@
public Object transform(Value source, TransformationContext context) {
Object object;
try {
- object = Value.convert(source.asItem());
+ object = Value.convert(Value.asItem(source));
} catch (XPathException e) {
throw new TransformationException(e);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Value2SimpleTypeTransformer.java Sun Sep 16 23:19:48 2007
@@ -36,7 +36,7 @@
public Object transform(Value source, TransformationContext context) {
Object object;
try {
- object = Value.convert(source.asItem());
+ object = Value.convert(Value.asItem(source));
} catch (XPathException e) {
throw new TransformationException(e);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOContextHelper.java Sun Sep 16 23:19:48 2007
@@ -28,6 +28,7 @@
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.TransformationException;
import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.interfacedef.util.XMLType;
import org.apache.tuscany.sdo.api.SDOUtil;
@@ -46,15 +47,36 @@
if (context == null) {
return getDefaultHelperContext();
}
- HelperContext helperContext = SDOUtil.createHelperContext();
- boolean found = register(helperContext, context.getTargetDataType());
- found = register(helperContext, context.getSourceDataType()) || found;
- if (found) {
+ HelperContext helperContext = (HelperContext)context.getMetadata().get(HelperContext.class.getName());
+ if (helperContext != null) {
return helperContext;
+ }
+ helperContext = SDOUtil.createHelperContext();
+
+ boolean found = false;
+ Operation op = context.getSourceOperation();
+ if (op != null) {
+ found = register(helperContext, op.getInputType()) || found;
+ found = register(helperContext, op.getOutputType()) || found;
} else {
- return getDefaultHelperContext();
+ found = register(helperContext, context.getSourceDataType()) || found;
}
+
+ op = context.getTargetOperation();
+ if (op != null) {
+ found = register(helperContext, op.getInputType()) || found;
+ found = register(helperContext, op.getOutputType()) || found;
+ } else {
+ found = register(helperContext, context.getTargetDataType()) || found;
+ }
+
+ if (!found) {
+ helperContext = getDefaultHelperContext();
+ }
+
+ context.getMetadata().put(HelperContext.class.getName(), helperContext);
+ return helperContext;
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java Sun Sep 16 23:19:48 2007
@@ -27,8 +27,11 @@
import org.apache.tuscany.sca.databinding.TransformationContext;
import org.apache.tuscany.sca.databinding.WrapperHandler;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
import org.apache.tuscany.sca.interfacedef.util.TypeInfo;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
import commonj.sdo.DataObject;
import commonj.sdo.Property;
@@ -50,23 +53,12 @@
public Object create(ElementInfo element, TransformationContext context) {
DataObject wrapper = null;
HelperContext helperContext = SDOContextHelper.getHelperContext(context);
- DataFactory dataFactory = helperContext.getDataFactory();
- XSDHelper xsdHelper = helperContext.getXSDHelper();
- Property prop =
- xsdHelper.getGlobalProperty(element.getQName().getNamespaceURI(), element.getQName().getLocalPart(), true);
- if (prop != null) {
- wrapper = dataFactory.create(prop.getType());
- } else {
- TypeInfo type = element.getType();
- QName typeName = type != null ? type.getQName() : null;
- if (typeName != null) {
- wrapper = dataFactory.create(typeName.getNamespaceURI(), typeName.getLocalPart());
- }
+ Type sdoType = getSDOType(helperContext, element);
+ if (sdoType != null) {
+ DataFactory dataFactory = helperContext.getDataFactory();
+ return dataFactory.create(sdoType);
}
- return wrapper;
-// XMLHelper xmlHelper = helperContext.getXMLHelper();
-// return xmlHelper.createDocument(wrapper, element.getQName().getNamespaceURI(), element.getQName()
-// .getLocalPart());
+ return null;
}
/**
@@ -80,7 +72,7 @@
}
@SuppressWarnings("unchecked")
- public List getChildren(Object wrapper) {
+ public List getChildren(Object wrapper, List<ElementInfo> childElements, TransformationContext context) {
DataObject wrapperDO =
(wrapper instanceof XMLDocument) ? ((XMLDocument)wrapper).getRootObject() : (DataObject)wrapper;
List<Property> properties = wrapperDO.getInstanceProperties();
@@ -108,5 +100,69 @@
}
}
return elements;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#getWrapperType(org.apache.tuscany.sca.interfacedef.util.ElementInfo, List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context) {
+ // FIXME: [rfeng] Temporarily disable the wrapping support for SDO to work around a few issues
+ // in the WSDL-less story
+ if (true) {
+ return null;
+ }
+ HelperContext helperContext = SDOContextHelper.getHelperContext(context);
+ Type sdoType = getSDOType(helperContext, element);
+ if (sdoType != null) {
+ // Check if child elements matches
+ for (ElementInfo child : childElements) {
+ if (sdoType.getProperty(child.getQName().getLocalPart()) == null) {
+ return null;
+ }
+ }
+ Class physical = sdoType.getInstanceClass();
+ DataType<XMLType> wrapperType =
+ new DataTypeImpl<XMLType>(SDODataBinding.NAME, physical, new XMLType(element));
+ return wrapperType;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @param helperContext
+ * @param element
+ * @return
+ */
+ private Type getSDOType(HelperContext helperContext, ElementInfo element) {
+ XSDHelper xsdHelper = helperContext.getXSDHelper();
+ Type sdoType = null;
+ Property prop =
+ xsdHelper.getGlobalProperty(element.getQName().getNamespaceURI(), element.getQName().getLocalPart(), true);
+ if (prop != null) {
+ sdoType = prop.getType();
+ } else {
+ TypeInfo type = element.getType();
+ QName typeName = type != null ? type.getQName() : null;
+ if (typeName != null) {
+ sdoType = helperContext.getTypeHelper().getType(typeName.getNamespaceURI(), typeName.getLocalPart());
+ }
+ }
+ return sdoType;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#isInstance(java.lang.Object, org.apache.tuscany.sca.interfacedef.util.ElementInfo, java.util.List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public boolean isInstance(Object wrapper,
+ ElementInfo element,
+ List<ElementInfo> childElements,
+ TransformationContext context) {
+ HelperContext helperContext = SDOContextHelper.getHelperContext(context);
+ Type sdoType = getSDOType(helperContext, element);
+ if (sdoType != null) {
+ return sdoType.isInstance(wrapper);
+ }
+ return false;
}
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandlerTestCase.java Sun Sep 16 23:19:48 2007
@@ -50,7 +50,7 @@
public void testWrapperAnyType() throws Exception {
XMLHelper xmlHelper = context.getXMLHelper();
XMLDocument document = xmlHelper.load(getClass().getResourceAsStream("/wrapper.xml"));
- List children = handler.getChildren(document);
+ List children = handler.getChildren(document, null, null);
assertEquals(5, children.size());
}
@@ -59,7 +59,7 @@
xsdHelper.define(getClass().getResourceAsStream("/wrapper.xsd"), null);
XMLHelper xmlHelper = context.getXMLHelper();
XMLDocument document = xmlHelper.load(getClass().getResourceAsStream("/wrapper.xml"));
- List children = handler.getChildren(document);
+ List children = handler.getChildren(document, null, null);
assertEquals(5, children.size());
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/WrapperHandler.java Sun Sep 16 23:19:48 2007
@@ -21,6 +21,7 @@
import java.util.List;
+import org.apache.tuscany.sca.interfacedef.DataType;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
/**
@@ -37,6 +38,28 @@
T create(ElementInfo element, TransformationContext context);
/**
+ * Get the data type for the wrapper
+ * @param element The wrapper element
+ * @param childElements A list of child elements
+ * @param context The transformation context
+ * @return The data type of the wrapper, null if it's not a wrapper type
+ */
+ DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context);
+
+ /**
+ * Check if the given data is an instance of the wrapper
+ * @param wrapper
+ * @param element
+ * @param childElements
+ * @param context
+ * @return
+ */
+ boolean isInstance(Object wrapper,
+ ElementInfo element,
+ List<ElementInfo> childElements,
+ TransformationContext context);
+
+ /**
* Set child element for the wrapper
*
* @param wrapper The wrapper
@@ -49,7 +72,11 @@
/**
* Get a list of child elements from the wrapper
* @param wrapper
+ * @param childElements
+ * @param context
* @return child elements under the wrapper
*/
- List getChildren(T wrapper);
+ List getChildren(T wrapper, List<ElementInfo> childElements, TransformationContext context);
+
+ // Object getChild(T wrapper, ElementInfo childElement, TransformationContext context);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java Sun Sep 16 23:19:48 2007
@@ -20,7 +20,9 @@
package org.apache.tuscany.sca.databinding.xml;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.parsers.ParserConfigurationException;
@@ -29,7 +31,10 @@
import org.apache.tuscany.sca.databinding.TransformationException;
import org.apache.tuscany.sca.databinding.WrapperHandler;
import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
import org.apache.tuscany.sca.interfacedef.util.ElementInfo;
+import org.apache.tuscany.sca.interfacedef.util.XMLType;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -58,7 +63,7 @@
wrapper.appendChild(wrapper.getOwnerDocument().importNode(node, true));
}
- public List getChildren(Node wrapper) {
+ public List getChildren(Node wrapper, List<ElementInfo> childElements, TransformationContext context) {
assert wrapper != null;
if (wrapper.getNodeType() == Node.DOCUMENT_NODE) {
wrapper = ((Document)wrapper).getDocumentElement();
@@ -73,4 +78,43 @@
}
return elements;
}
+
+ /**
+ * @see org.apache.tuscany.sca.databinding.WrapperHandler#getWrapperType(org.apache.tuscany.sca.interfacedef.util.ElementInfo, List, org.apache.tuscany.sca.databinding.TransformationContext)
+ */
+ public DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context) {
+ DataType<XMLType> wrapperType =
+ new DataTypeImpl<XMLType>(DOMDataBinding.NAME, Node.class, new XMLType(element));
+ return wrapperType;
+ }
+
+ public boolean isInstance(Object wrapperObj,
+ ElementInfo element,
+ List<ElementInfo> childElements,
+ TransformationContext context) {
+ Node wrapper = (Node)wrapperObj;
+ if (wrapper.getNodeType() == Node.DOCUMENT_NODE) {
+ wrapper = ((Document)wrapper).getDocumentElement();
+ }
+ QName elementName = new QName(wrapper.getNamespaceURI(), wrapper.getLocalName());
+ if (!element.getQName().equals(elementName)) {
+ return false;
+ }
+ Set<QName> names = new HashSet<QName>();
+ for (ElementInfo e : childElements) {
+ names.add(e.getQName());
+ }
+ NodeList nodes = wrapper.getChildNodes();
+ for (int j = 0; j < nodes.getLength(); j++) {
+ Node node = nodes.item(j);
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ elementName = new QName(wrapper.getNamespaceURI(), wrapper.getLocalName());
+ if (!names.contains(elementName)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryImplementationProvider.java Sun Sep 16 23:19:48 2007
@@ -25,10 +25,10 @@
import javax.xml.namespace.QName;
import org.apache.tuscany.sca.assembly.ComponentProperty;
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.assembly.ComponentService;
import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
import org.apache.tuscany.sca.core.factory.ObjectFactory;
+import org.apache.tuscany.sca.databinding.javabeans.SimpleJavaDataBinding;
import org.apache.tuscany.sca.databinding.saxon.SaxonNodeDataBinding;
import org.apache.tuscany.sca.databinding.saxon.SaxonValueDataBinding;
import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory;
@@ -76,15 +76,15 @@
}
private void init() {
- List<ComponentService> services = component.getServices();
- for (ComponentService sevice : services) {
+ List<Service> services = implementation.getServices();
+ for (Service sevice : services) {
InterfaceContract interfaceContract = sevice.getInterfaceContract();
//interfaceContract.getInterface().setDefaultDataBinding(ValueRepresentation.class.getName());
setDataBinding(interfaceContract.getInterface(), false);
}
- List<ComponentReference> references = component.getReferences();
- for (ComponentReference reference : references) {
+ List<Reference> references = implementation.getReferences();
+ for (Reference reference : references) {
InterfaceContract interfaceContract = reference.getInterfaceContract();
//interfaceContract.getInterface().setDefaultDataBinding(ValueRepresentation.class.getName());
setDataBinding(interfaceContract.getInterface(), true);
@@ -131,11 +131,12 @@
interfaze.setDefaultDataBinding(SaxonNodeDataBinding.NAME);
List<Operation> operations = interfaze.getOperations();
for (Operation operation : operations) {
+ operation.setDataBinding(SaxonNodeDataBinding.NAME);
DataType<List<DataType>> inputType = operation.getInputType();
if (inputType != null) {
List<DataType> logical = inputType.getLogical();
for (DataType inArg : logical) {
- if (inArg.getPhysical().isPrimitive() || inArg.getPhysical() == java.lang.String.class) {
+ if (SimpleJavaDataBinding.NAME.equals(inArg.getDataBinding())) {
if (!isReference) {
inArg.setDataBinding(SaxonValueDataBinding.NAME);
}
@@ -146,7 +147,7 @@
}
DataType outputType = operation.getOutputType();
if (outputType != null) {
- if (outputType.getPhysical().isPrimitive() || outputType.getPhysical() == java.lang.String.class) {
+ if (SimpleJavaDataBinding.NAME.equals(outputType.getDataBinding())) {
if (!isReference) {
outputType.setDataBinding(SaxonValueDataBinding.NAME);
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryInvoker.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryInvoker.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryInvoker.java Sun Sep 16 23:19:48 2007
@@ -33,6 +33,7 @@
import javax.xml.transform.stream.StreamSource;
import net.sf.saxon.Configuration;
+import net.sf.saxon.event.Builder;
import net.sf.saxon.om.DocumentInfo;
import net.sf.saxon.om.Item;
import net.sf.saxon.om.NodeInfo;
@@ -239,11 +240,11 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StreamResult sw = new StreamResult(baos);
try {
- QueryResult.serialize((NodeInfo)inputArguments[i], sw, props);
+ QueryResult.serialize((NodeInfo)inputArguments[i], sw, props, ((NodeInfo)inputArguments[i]).getConfiguration());
baos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
StreamSource ss = new StreamSource(bais);
- parameters[i] = configuration.buildDocument(ss);
+ parameters[i] = Builder.build(ss, null, configuration);
} catch (Exception e) {
e.printStackTrace();
parameters[i] = null;
@@ -281,13 +282,13 @@
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(element), sr);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- docInfo = configuration.buildDocument(new StreamSource(bais));
+ docInfo = (DocumentInfo)Builder.build(new StreamSource(bais), null, configuration);
} catch (Exception e) {
e.printStackTrace();
return parameter;
}
} else {
- docInfo = configuration.buildDocument(new DOMSource(doc));
+ docInfo = (DocumentInfo)Builder.build(new DOMSource(doc), null, configuration);
}
parameter = docInfo;
} catch (XPathException e) {
Modified: incubator/tuscany/branches/sca-java-1.0/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Sun Sep 16 23:19:48 2007
@@ -48,7 +48,11 @@
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
import org.xml.sax.InputSource;
/**
@@ -59,20 +63,20 @@
public class WSDLModelResolver implements ModelResolver {
private Contribution contribution;
private Map<String, List<WSDLDefinition>> map = new HashMap<String, List<WSDLDefinition>>();
-
+
private ExtensionRegistry wsdlExtensionRegistry;
-
+
private WSDLFactory wsdlFactory;
private javax.wsdl.factory.WSDLFactory wsdl4jFactory;
private ContributionFactory contributionFactory;
public WSDLModelResolver(Contribution contribution, ModelFactoryExtensionPoint modelFactories) {
this.contribution = contribution;
-
+
this.wsdlFactory = modelFactories.getFactory(WSDLFactory.class);
this.wsdl4jFactory = modelFactories.getFactory(javax.wsdl.factory.WSDLFactory.class);
this.contributionFactory = modelFactories.getFactory(ContributionFactory.class);
-
+
wsdlExtensionRegistry = this.wsdl4jFactory.newPopulatedExtensionRegistry();
}
@@ -122,10 +126,11 @@
DeployedArtifact proxyArtifact = contributionFactory.createDeployedArtifact();
proxyArtifact.setURI(uri);
-
+
//use contribution resolution (this supports import/export)
- DeployedArtifact importedArtifact = contribution.getModelResolver().resolveModel(DeployedArtifact.class, proxyArtifact);
- if(importedArtifact.getLocation() != null) {
+ DeployedArtifact importedArtifact =
+ contribution.getModelResolver().resolveModel(DeployedArtifact.class, proxyArtifact);
+ if (importedArtifact.getLocation() != null) {
//get the artifact URL
url = new URL(importedArtifact.getLocation());
}
@@ -300,11 +305,33 @@
Types types = definition.getTypes();
if (types != null) {
schemaCollection.setSchemaResolver(new XSDModelResolver.URIResolverImpl(contribution));
+ int index = 0;
for (Object ext : types.getExtensibilityElements()) {
if (ext instanceof Schema) {
Element element = ((Schema)ext).getElement();
- schemaCollection.setBaseUri(((Schema)ext).getDocumentBaseURI());
- schemaCollection.read(element, element.getBaseURI());
+ Document doc = (Document) element.getOwnerDocument().cloneNode(false);
+ Element schema = (Element)doc.importNode(element, true);
+ doc.appendChild(schema);
+ Node parent = element.getParentNode();
+ while (parent instanceof Element) {
+ Element root = (Element)parent;
+ NamedNodeMap nodeMap = root.getAttributes();
+ for (int i = 0; i < nodeMap.getLength(); i++) {
+ Attr attr = (Attr)nodeMap.item(i);
+ String name = attr.getName();
+ if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
+ if (schema.getAttributeNode(name) == null) {
+ schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
+ }
+ }
+ }
+ parent = parent.getParentNode();
+ }
+ String baseURI = ((Schema)ext).getDocumentBaseURI();
+ doc.setDocumentURI(baseURI);
+ schemaCollection.setBaseUri(baseURI);
+ schemaCollection.read(doc, baseURI + "#" + index, null);
+ index++;
}
}
}
Modified: incubator/tuscany/branches/sca-java-1.0/modules/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/pom.xml?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/pom.xml Sun Sep 16 23:19:48 2007
@@ -72,9 +72,7 @@
<module>databinding-sdo</module>
<module>databinding-sdo-axiom</module>
<module>databinding-json</module>
- <!--
<module>databinding-saxon</module>
- -->
<module>databinding-xmlbeans</module>
<!--
<module>discovery-jms</module>
@@ -110,9 +108,7 @@
<module>implementation-resource</module>
<module>implementation-script</module>
<module>implementation-spring</module>
- <!--
<module>implementation-xquery</module>
- -->
<module>java2wsdl</module>
<!--
<module>jmx</module>
Modified: incubator/tuscany/branches/sca-java-1.0/samples/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/pom.xml?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/pom.xml Sun Sep 16 23:19:48 2007
@@ -69,9 +69,7 @@
<module>implementation-pojo-extension</module>
<module>loanapplication</module>
<module>osgi-supplychain</module>
- <!--
<module>quote-xquery</module>
- -->
<module>simple-bigbank</module>
<module>simple-bigbank-spring</module>
<module>simple-callback</module>
Modified: incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/pom.xml?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/pom.xml Sun Sep 16 23:19:48 2007
@@ -78,7 +78,7 @@
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
- <version>8.9</version>
+ <version>8.7</version>
</dependency>
<dependency>
@@ -130,6 +130,18 @@
<artifactId>tuscany-sdo-plugin</artifactId>
<version>1.0-incubating</version>
<executions>
+ <!--
+ <execution>
+ <id>generate-quotejoin-sdo</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <schemaFile>${basedir}/src/main/resources/wsdl/quotejoin.wsdl</schemaFile>
+ </configuration>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ -->
<execution>
<id>generate-quote-sdo</id>
<phase>generate-sources</phase>
Modified: incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/quotejoin.wsdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/quotejoin.wsdl?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/quotejoin.wsdl (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/wsdl/quotejoin.wsdl Sun Sep 16 23:19:48 2007
@@ -19,24 +19,23 @@
-->
<wsdl:definitions targetNamespace="http://quote.xquery" xmlns:tns="http://quote.xquery"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:ava="http://www.example.org/avail"
- xmlns:pri="http://www.example.org/price"
- xmlns:quo="http://www.example.org/quote" name="quotejoin">
-
- <wsdl:import namespace="http://www.example.org/avail" location="AvailQuote.xsd"/>
- <wsdl:import namespace="http://www.example.org/price" location="PriceQuote.xsd"/>
- <wsdl:import namespace="http://www.example.org/quote" location="Quote.xsd"/>
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ava="http://www.example.org/avail"
+ xmlns:pri="http://www.example.org/price" xmlns:quo="http://www.example.org/quote" name="quotejoin">
+
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://quote.xquery"
- xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ava="http://www.example.org/avail"
+ xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ava="http://www.example.org/avail"
xmlns:pri="http://www.example.org/price" xmlns:quo="http://www.example.org/quote">
+ <import namespace="http://www.example.org/avail" schemaLocation="AvailQuote.xsd" />
+ <import namespace="http://www.example.org/price" schemaLocation="PriceQuote.xsd" />
+ <import namespace="http://www.example.org/quote" schemaLocation="Quote.xsd" />
+
<element name="joinPriceAndAvailQuotes">
<complexType>
<sequence>
- <element name="priceQuote" type="pri:PriceQuote" />
- <element name="availQuote" type="ava:AvailQuote" />
+ <element name="priceQuote" type="pri:PriceQuote" />
+ <element name="availQuote" type="ava:AvailQuote" />
<element name="taxRate" type="xsd:float" />
</sequence>
</complexType>
@@ -49,7 +48,21 @@
</sequence>
</complexType>
</element>
- </schema>
+ <element name="provideAvailQuote">
+ <complexType>
+ <sequence>
+ <element name="provideAvailQuote" type="xsd:string" />
+ </sequence>
+ </complexType>
+ </element>
+ <element name="provideAvailQuoteResponse">
+ <complexType>
+ <sequence>
+ <element name="provideAvailQuoteReturn" type="ava:AvailQuote" />
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
</wsdl:types>
<wsdl:message name="joinPriceAndAvailQuotesRequest">
@@ -83,6 +96,41 @@
<wsdl:service name="QuoteJoinService">
<wsdl:port binding="tns:QuoteJoinSoapBinding" name="QuoteJoinSoapPort">
<wsdlsoap:address location="http://localhost:8085/QuoteJoinService" />
+ </wsdl:port>
+ </wsdl:service>
+
+
+
+ <wsdl:message name="provideAvailQuoteRequest">
+ <wsdl:part element="tns:provideAvailQuote" name="parameters" />
+ </wsdl:message>
+ <wsdl:message name="provideAvailQuoteResponse">
+ <wsdl:part element="tns:provideAvailQuoteResponse" name="parameters" />
+ </wsdl:message>
+
+ <wsdl:portType name="AvailQuoteProvider">
+ <wsdl:operation name="provideAvailQuote">
+ <wsdl:input message="tns:provideAvailQuoteRequest" name="provideAvailQuoteRequest" />
+ <wsdl:output message="tns:provideAvailQuoteResponse" name="provideAvailQuoteResponse" />
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="AvailQuoteProviderSoapBinding" type="tns:AvailQuoteProvider">
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="provideAvailQuote">
+ <wsdlsoap:operation soapAction="" />
+ <wsdl:input name="provideAvailQuoteRequest">
+ <wsdlsoap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="provideAvailQuoteResponse">
+ <wsdlsoap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="AvailQuoteProviderService">
+ <wsdl:port binding="tns:AvailQuoteProviderSoapBinding" name="AvailQuoteProviderSoapPort">
+ <wsdlsoap:address location="http://localhost:8085/AvailQuoteProviderService" />
</wsdl:port>
</wsdl:service>
Modified: incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/xqueryquotews.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/xqueryquotews.composite?rev=576267&r1=576266&r2=576267&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/xqueryquotews.composite (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/quote-xquery/src/main/resources/xqueryquotews.composite Sun Sep 16 23:19:48 2007
@@ -25,7 +25,8 @@
<dbsdo:import.sdo factory="org.example.avail.AvailFactory" />
<dbsdo:import.sdo factory="org.example.price.PriceFactory" />
<dbsdo:import.sdo factory="org.example.quote.QuoteFactory" />
-
+ <dbsdo:import.sdo location="wsdl/quotejoin.wsdl" />
+
<component name="QuoteJoinServerComponent">
<service name="quoteJoin">
<interface.java interface="xquery.quote.QuoteJoin" />
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org