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]

Reply via email to