Author: rfeng
Date: Sat Sep 9 10:31:56 2006
New Revision: 441828
URL: http://svn.apache.org/viewvc?view=rev&rev=441828
Log:
Add basic WSDL support to echo databinding sample and some minor improvements
Modified:
incubator/tuscany/java/samples/sca/echo.databinding/pom.xml
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/ComponentBImpl.java
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/Echo.java
incubator/tuscany/java/samples/sca/echo.databinding/src/test/resources/META-INF/sca/default.scdl
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/TransformationContext.java
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/JavaParametersTransformer.java
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl
incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/idl/java/JavaInterfaceProcessorRegistryImpl.java
Modified: incubator/tuscany/java/samples/sca/echo.databinding/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/pom.xml?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
--- incubator/tuscany/java/samples/sca/echo.databinding/pom.xml (original)
+++ incubator/tuscany/java/samples/sca/echo.databinding/pom.xml Sat Sep 9
10:31:56 2006
@@ -60,6 +60,13 @@
</dependency>
<dependency>
+ <groupId>org.apache.tuscany.idl</groupId>
+ <artifactId>wsdl</artifactId>
+ <version>${pom.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom-impl</artifactId>
<version>SNAPSHOT</version>
@@ -80,7 +87,12 @@
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.tuscany.idl</groupId>
+ <artifactId>wsdl</artifactId>
+ <version>${sca.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified:
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/ComponentBImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/ComponentBImpl.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/ComponentBImpl.java
(original)
+++
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/ComponentBImpl.java
Sat Sep 9 10:31:56 2006
@@ -40,7 +40,7 @@
public Node call(Node msg) {
String request = msg + " [" + msg.getClass().getName() + "]";
System.out.println("ComponentB --> Received message: " + request);
- Node ret = (Node) echoReference.invoke(msg);
+ Node ret = (Node) echoReference.echo(msg);
String response = ret + " [" + ret.getClass().getName() + "]";
System.out.println("ComponentB --> Returned message: " + response);
return ret;
@@ -49,7 +49,7 @@
public XMLStreamReader call1(XMLStreamReader msg) {
String request = msg + " [" + msg.getClass().getName() + "]";
System.out.println("ComponentB --> Received message: " + request);
- XMLStreamReader ret = (XMLStreamReader) echoReference.invoke(msg);
+ XMLStreamReader ret = (XMLStreamReader) echoReference.echo(msg);
String response = ret + " [" + ret.getClass().getName() + "]";
System.out.println("ComponentB --> Returned message: " + response);
return ret;
Modified:
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
(original)
+++
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/DataBindingIntegrationTestCase.java
Sat Sep 9 10:31:56 2006
@@ -37,6 +37,7 @@
protected void setUp() throws Exception {
addExtension("echo.binding",
getClass().getClassLoader().getResource("META-INF/sca/echo.system.scdl"));
+ addExtension("idl.wsdl",
getClass().getClassLoader().getResource("META-INF/tuscany/test-interface-wsdl.scdl"));
addExtension("databinding",
getClass().getClassLoader().getResource("META-INF/tuscany/test-databinding.scdl"));
super.setUp();
CompositeContext context = CurrentCompositeContext.getContext();
Modified:
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/Echo.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/Echo.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/Echo.java
(original)
+++
incubator/tuscany/java/samples/sca/echo.databinding/src/test/java/echo/Echo.java
Sat Sep 9 10:31:56 2006
@@ -19,11 +19,14 @@
package echo;
import org.apache.tuscany.api.annotation.DataType;
+import org.osoa.sca.annotations.Remotable;
/**
* @version $Rev$ $Date$
*/
[EMAIL PROTECTED](name="javax.xml.stream.XMLStreamReader")
+// @DataType(name="org.apache.axiom.om.OMElement")
[EMAIL PROTECTED](name="org.w3c.dom.Node")
[EMAIL PROTECTED]
public interface Echo {
- Object invoke(Object msg);
+ Object echo(Object msg);
}
Modified:
incubator/tuscany/java/samples/sca/echo.databinding/src/test/resources/META-INF/sca/default.scdl
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/echo.databinding/src/test/resources/META-INF/sca/default.scdl?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/samples/sca/echo.databinding/src/test/resources/META-INF/sca/default.scdl
(original)
+++
incubator/tuscany/java/samples/sca/echo.databinding/src/test/resources/META-INF/sca/default.scdl
Sat Sep 9 10:31:56 2006
@@ -1,43 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
-->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="echo.sample">
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance" name="echo.sample">
- <service name="ClientService">
- <interface.java class="echo.Interface1"/>
- <binding.echo/>
+ <service name="EchoService">
+ <interface.java class="echo.Interface1" />
+ <binding.echo />
<reference>ComponentB</reference>
</service>
<component name="ComponentA">
- <implementation.java class="echo.ComponentAImpl"/>
+ <implementation.java class="echo.ComponentAImpl" />
<reference name="componentBReference">ComponentB</reference>
</component>
<component name="ComponentB">
- <implementation.java class="echo.ComponentBImpl"/>
+ <implementation.java class="echo.ComponentBImpl" />
<reference name="echoReference">EchoReference</reference>
</component>
-
+
<reference name="EchoReference">
- <interface.java interface="echo.Echo"/>
- <binding.echo/>
+ <!--
+ <interface.java interface="echo.Echo"/>
+ -->
+ <interface.wsdl
interface="http://example.com/echo.wsdl#wsdl.interface(EchoPortType)"
wsdli:wsdlLocation="http://example.com/echo.wsdl wsdl/echo.wsdl" />
+ <binding.echo />
</reference>
-
+
</composite>
Modified:
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/TransformationContext.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/TransformationContext.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/TransformationContext.java
(original)
+++
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/TransformationContext.java
Sat Sep 9 10:31:56 2006
@@ -36,14 +36,14 @@
public DataType getTargetDataType();
/**
- * @param sourceNode
+ * @param sourceDataType
*/
- public void setSourceDataType(DataType sourceNode);
+ public void setSourceDataType(DataType sourceDataType);
/**
- * @param targetNode
+ * @param targetDataType
*/
- public void setTargetDataType(DataType targetNode);
+ public void setTargetDataType(DataType targetDataType);
/**
* @return
Modified:
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java
(original)
+++
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java
Sat Sep 9 10:31:56 2006
@@ -23,6 +23,7 @@
import org.apache.tuscany.spi.model.DataType;
import org.apache.tuscany.spi.model.Operation;
import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
import org.apache.tuscany.spi.wire.Message;
import org.apache.tuscany.spi.wire.RuntimeWire;
@@ -67,7 +68,11 @@
msg.setBody(input);
Message resultMsg = next.invoke(msg);
Object result = resultMsg.getBody();
- if (result != null) {
+ // FIXME: How to deal with faults?
+ if(result instanceof Throwable) {
+ // We need to figure out what fault type it is and then transform
it back the source fault type
+ throw new InvocationRuntimeException((Throwable) result);
+ } else if (result != null) {
result = transform(result, targetOperation.getOutputType(),
sourceOperation.getOutputType());
resultMsg.setBody(result);
}
Modified:
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/JavaParametersTransformer.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/JavaParametersTransformer.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/JavaParametersTransformer.java
(original)
+++
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/JavaParametersTransformer.java
Sat Sep 9 10:31:56 2006
@@ -37,14 +37,16 @@
public class JavaParametersTransformer extends TransformerExtension<Object[],
Object[]> implements
PullTransformer<Object[], Object[]> {
+ private static final String IDL_INPUT = "idl:input";
+
@Override
public String getSourceBinding() {
- return "java:parameters";
+ return IDL_INPUT;
}
@Override
public String getTargetBinding() {
- return "java:parameters";
+ return IDL_INPUT;
}
private Mediator mediator;
@@ -83,6 +85,7 @@
List sourceParameterTypes = (List)
context.getSourceDataType().getLogical();
List targetParameterTypes = (List)
context.getTargetDataType().getLogical();
Object[] args = source;
+ // TODO: How to handle document-literal wrapped style?
if (args != null) {
Object[] newArgs = new Object[args.length];
for (int i = 0; i < sourceParameterTypes.size(); i++) {
Modified:
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl
(original)
+++
incubator/tuscany/java/sca/databinding/databinding-framework/src/main/resources/META-INF/sca/databinding.scdl
Sat Sep 9 10:31:56 2006
@@ -59,8 +59,16 @@
<system:implementation.system
class="org.apache.tuscany.databinding.xml.String2Node" />
</component>
- <component name="transformer.ObjectArray2ObjectArray">
+ <component name="transformer.JavaParametersTransformer">
<system:implementation.system
class="org.apache.tuscany.databinding.impl.JavaParametersTransformer" />
</component>
+ <component name="transformer.WSDL2JavaTransformer">
+ <system:implementation.system
class="org.apache.tuscany.databinding.impl.WSDL2JavaTransformer" />
+ </component>
+
+ <component name="transformer.Java2WSDLTransformer">
+ <system:implementation.system
class="org.apache.tuscany.databinding.impl.Java2WSDLTransformer" />
+ </component>
+
</composite>
Modified:
incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
(original)
+++
incubator/tuscany/java/sca/idl/wsdl/src/main/java/org/apache/tuscany/idl/wsdl/InterfaceWSDLIntrospectorImpl.java
Sat Sep 9 10:31:56 2006
@@ -37,15 +37,25 @@
import org.apache.tuscany.spi.idl.InvalidServiceContractException;
import org.apache.tuscany.spi.model.DataType;
import org.apache.tuscany.spi.model.InteractionScope;
+import org.osoa.sca.annotations.Property;
/**
* Introspector for creating WSDLServiceContract definitions from WSDL
PortTypes.
*/
public class InterfaceWSDLIntrospectorImpl implements
InterfaceWSDLIntrospector {
+ public static final String INPUT_PARTS = "idl:input";
+ public static final String IDL_WSDL_DOCUMENT_LITERAL_WRPPED =
"idl.wsdl.documentLiteralWrpped";
+ private String defaultDataBinding = "org.w3c.dom.Node"; // Default to DOM
binding?
+
+ @Property(name="defaultDataBinding")
+ public void setDefaultDataBinding(String defaultDataBinding) {
+ this.defaultDataBinding = defaultDataBinding;
+ }
// FIXME: Do we want to deal with document-literal wrapped style based on
the JAX-WS spec?
protected Map<String, org.apache.tuscany.spi.model.Operation<QName>>
introspectOperations(PortType portType)
throws NotSupportedWSDLException {
+ boolean oneway = false;
Map<String, org.apache.tuscany.spi.model.Operation<QName>> operations =
new HashMap<String,
org.apache.tuscany.spi.model.Operation<QName>>();
for (Object op : portType.getOperations()) {
@@ -58,6 +68,10 @@
Message outputMsg;
Output output = wsdlOp.getOutput();
+ if (output == null) {
+ // TODO: [rfeng] Is this the correct way to determine if it's
non-blocking?
+ oneway = true;
+ }
outputMsg = (output == null) ? null : output.getMessage();
List outputParts = (outputMsg == null) ? null :
outputMsg.getOrderedParts(null);
@@ -88,7 +102,7 @@
// FIXME: [rfeng] How to figure the nonBlocking and dataBinding?
org.apache.tuscany.spi.model.Operation<QName> operation =
- new org.apache.tuscany.spi.model.Operation<QName>(name,
inputType, outputType, faultTypes);
+ new org.apache.tuscany.spi.model.Operation<QName>(name,
inputType, outputType, faultTypes, oneway, defaultDataBinding);
operations.put(name, operation);
}
return operations;
@@ -104,7 +118,8 @@
dataTypes.add(dataType);
}
}
- DataType<List<DataType<QName>>> msgType = new
DataType<List<DataType<QName>>>("wsdl:parts", Object.class, dataTypes);
+ DataType<List<DataType<QName>>> msgType = new
DataType<List<DataType<QName>>>(INPUT_PARTS, Object.class, dataTypes);
+ msgType.setMetadata(IDL_WSDL_DOCUMENT_LITERAL_WRPPED, Boolean.FALSE);
return msgType;
}
@@ -115,7 +130,7 @@
partTypeName = part.getTypeName();
}
// FIXME: What java class is it? Should we try to see if there's a
generated one?
- return new DataType<QName>("org.w3c.dom.Node", Object.class,
partTypeName);
+ return new DataType<QName>(defaultDataBinding, Object.class,
partTypeName);
}
/**
@@ -150,5 +165,6 @@
}
return contract;
}
+
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/idl/java/JavaInterfaceProcessorRegistryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/idl/java/JavaInterfaceProcessorRegistryImpl.java?view=diff&rev=441828&r1=441827&r2=441828
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/idl/java/JavaInterfaceProcessorRegistryImpl.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/idl/java/JavaInterfaceProcessorRegistryImpl.java
Sat Sep 9 10:31:56 2006
@@ -48,6 +48,8 @@
*/
public class JavaInterfaceProcessorRegistryImpl implements
JavaInterfaceProcessorRegistry {
+ public static final String IDL_INPUT = "idl:input";
+
private List<JavaInterfaceProcessor> processors = new
ArrayList<JavaInterfaceProcessor>();
public JavaInterfaceProcessorRegistryImpl() {
@@ -132,7 +134,7 @@
String dataBinding = "java.lang.Object";
DataType<List<DataType<Type>>> inputType =
- new DataType<List<DataType<Type>>>("java:parameters",
Object[].class, paramDataTypes);
+ new DataType<List<DataType<Type>>>(IDL_INPUT, Object[].class,
paramDataTypes);
Operation<Type> operation =
new Operation<Type>(name, inputType, returnDataType,
faultDataTypes, nonBlocking, dataBinding);
operations.put(name, operation);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]