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 2010/09/24 19:19:07 UTC

svn commit: r1000980 - in /tuscany/sca-java-2.x/trunk/itest/async-interactions: ./ src/ src/main/ src/main/java/ src/main/java/test/ src/main/java/test/client/ src/main/java/test/server/ src/main/resources/ src/main/resources/test/ src/main/resources/t...

Author: rfeng
Date: Fri Sep 24 17:19:06 2010
New Revision: 1000980

URL: http://svn.apache.org/viewvc?rev=1000980&view=rev
Log:
Add an itest for various async interaction patterns with binding.jms

Added:
    tuscany/sca-java-2.x/trunk/itest/async-interactions/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl   (with props)
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/
    tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java   (with props)

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml Fri Sep 24 17:19:06 2010
@@ -0,0 +1,164 @@
+<?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.    
+-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>tuscany-itest</artifactId>
+        <version>2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>itest-async-integrations</artifactId>
+    <name>Apache Tuscany Async Integration Tests</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-node-impl</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-java-runtime</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-jms-runtime</artifactId>
+            <version>2.0-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>activemq-core</artifactId>
+            <version>5.2.0</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.5</version>
+                <executions>
+                    <execution>
+                        <id>add-jaxws</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-test-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${project.build.directory}/jaxws-source</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>jaxws-maven-plugin</artifactId>
+                <version>1.12</version>
+                <!-- Explicitly add the transitive dependencies for jaxws-api http://jira.codehaus.org/browse/MEV-498 -->
+                <dependencies>
+                    <dependency>
+                        <groupId>javax.jws</groupId>
+                        <artifactId>jsr181-api</artifactId>
+                        <version>1.0-MR1</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>javax.annotation</groupId>
+                        <artifactId>jsr250-api</artifactId>
+                        <version>1.0</version>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>wsimport-client</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wsimport</goal>
+                        </goals>
+                        <configuration>
+                            <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
+                            <wsdlFiles>
+                                <wsdlFile>creditcard.wsdl</wsdlFile>
+                            </wsdlFiles>
+                            <bindingDirectory>${basedir}/src/main/resources/wsdl</bindingDirectory>
+                            <bindingFiles>
+                                <bindingFile>creditcard-client.xml</bindingFile>
+                            </bindingFiles>
+                            <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+                            <!-- Configure the stale file so that two executions will work -->
+                            <staleFile>${project.build.directory}/wsimport-client.stale</staleFile>
+                            <verbose>false</verbose>
+                            <xnocompile>true</xnocompile>
+
+                            <xjcArgs>
+                                <xjcArg>-p</xjcArg>
+                                <xjcArg>com.example.test.jaxb.client</xjcArg>
+                            </xjcArgs>
+
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>wsimport-server</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>wsimport</goal>
+                        </goals>
+                        <configuration>
+                            <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
+                            <wsdlFiles>
+                                <wsdlFile>creditcard.wsdl</wsdlFile>
+                            </wsdlFiles>
+                            <bindingDirectory>${basedir}/src/main/resources/wsdl</bindingDirectory>
+                            <bindingFiles>
+                                <bindingFile>creditcard-server.xml</bindingFile>
+                            </bindingFiles>
+                            <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
+                            <staleFile>${project.build.directory}/wsimport-server.stale</staleFile>
+                            <verbose>false</verbose>
+                            <xnocompile>true</xnocompile>
+
+                            <xjcArgs>
+                                <xjcArg>-p</xjcArg>
+                                <xjcArg>com.example.test.jaxb.server</xjcArg>
+                            </xjcArgs>
+
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,60 @@
+/*
+ * 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.    
+ */
+package test.client;
+
+/**
+ * A client interface to invoke the CreditCardPayment using different interaction patterns
+ */
+public interface CreditCardClient {
+    /**
+     * Invoke the service synchronously 
+     * @param creditCardNumber
+     * @param holder
+     * @param amount
+     * @return
+     */
+    String authorize(String creditCardNumber, String holder, float amount);
+
+    /**
+     * Invoke the service asynchronously and poll for the result 
+     * @param creditCardNumber
+     * @param holder
+     * @param amount
+     * @return
+     */
+    String authorizeAsync(String creditCardNumber, String holder, float amount);
+
+    /**
+     * Invoke the service asynchronously and get the result from a callback
+     * @param creditCardNumber
+     * @param holder
+     * @param amount
+     * @return
+     */
+    String authorizeAsyncWithCallback(String creditCardNumber, String holder, float amount);
+
+    /**
+     * Invoke the service using oneway (fire-and-forget) and the target component will make a callback upon the request has been processed
+     * @param creditCardNumber
+     * @param holder
+     * @param amount
+     * @return
+     */
+    String authorizeSCAAsyncWithCallback(String creditCardNumber, String holder, float amount);
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardClient.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,29 @@
+/*
+ * 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.    
+ */
+package test.client;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The callback interface
+ */
+@Remotable
+public interface CreditCardPaymentCallback {
+    void authorizeResponse(String creditCardNumber, String status);
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,153 @@
+/*
+ * 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.    
+ */
+package test.client;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Future;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Service;
+
+import com.example.test.jaxb.client.AuthorizeResponse;
+import com.example.test.jaxb.client.CreditCardDetailsType;
+import com.example.test.jaxb.client.ObjectFactory;
+import com.example.test.jaxb.client.PayerType;
+import com.example.test.jaxws.client.AuthorizeFault;
+import com.example.test.jaxws.client.CreditCardPayment;
+
+/**
+ * Mocked implementation of CreditCardPaymentClient
+ */
+@Service(CreditCardClient.class)
+public class CreditCardPaymentClientImpl implements CreditCardClient, CreditCardPaymentCallback {
+
+    @Reference
+    private CreditCardPayment proxy;
+
+    @Reference
+    private CreditCardPaymentRequestClient asyncProxy;
+
+    @Override
+    public String authorize(String creditCardNumber, String holder, float amount) {
+        CreditCardDetailsType creditCard = createCreditCard(creditCardNumber, holder);
+
+        try {
+            return proxy.authorize(creditCard, amount);
+        } catch (AuthorizeFault e) {
+            return "FAIL: " + e.getFaultInfo().getErrorCode();
+        }
+
+    }
+
+    private CreditCardDetailsType createCreditCard(String creditCardNumber, String holder) {
+        ObjectFactory factory = new ObjectFactory();
+        CreditCardDetailsType creditCard = factory.createCreditCardDetailsType();
+        creditCard.setCreditCardNumber(creditCardNumber);
+        PayerType payer = factory.createPayerType();
+        payer.setName(holder);
+        creditCard.setCardOwner(payer);
+        return creditCard;
+    }
+
+    public String authorizeAsync(String creditCardNumber, String holder, float amount) {
+        CreditCardDetailsType creditCard = createCreditCard(creditCardNumber, holder);
+
+        Response<AuthorizeResponse> respone = proxy.authorizeAsync(creditCard, amount);
+        try {
+            return respone.get().getStatus();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "FAIL: " + e.getMessage();
+        }
+
+    }
+
+    public String authorizeAsyncWithCallback(String creditCardNumber, String holder, float amount) {
+        CreditCardDetailsType creditCard = createCreditCard(creditCardNumber, holder);
+
+        Future<?> respone = proxy.authorizeAsync(creditCard, amount, new AsyncHandler<AuthorizeResponse>() {
+
+            @Override
+            public void handleResponse(Response<AuthorizeResponse> res) {
+                try {
+                    System.out.println(Thread.currentThread() + " Response has arrived: " + res.get().getStatus());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+        while (!(respone.isDone() || respone.isCancelled())) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+                return "FAIL: " + e.getMessage();
+            }
+        }
+
+        System.out.println(Thread.currentThread() + " The task is done");
+        try {
+            return ((AuthorizeResponse)respone.get()).getStatus();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "FAIL: " + e.getMessage();
+        }
+    }
+
+    /**
+     * A map that host the result for a given credit card
+     */
+    private static Map<String, String> statusMap = new HashMap<String, String>();
+
+    public String authorizeSCAAsyncWithCallback(String creditCardNumber, String holder, float amount) {
+        CreditCardDetailsType creditCard = createCreditCard(creditCardNumber, holder);
+        asyncProxy.authorizeRequest(creditCard, amount);
+        while (true) {
+            synchronized (statusMap) {
+                String status = statusMap.remove(creditCardNumber);
+                if (status != null) {
+                    System.out.println("Response found for " + creditCardNumber + " :" + status);
+                    return status;
+                } else {
+                    try {
+                        statusMap.wait();
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                        return "FAIL: " + e.getMessage();
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void authorizeResponse(String creditCardNumber, String status) {
+        System.out.println("SCA Callback: CreditCard: " + creditCardNumber + " Status: " + status);
+        synchronized (statusMap) {
+            statusMap.put(creditCardNumber, status);
+            statusMap.notifyAll();
+        }
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,36 @@
+/*
+ * 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.    
+ */
+
+package test.client;
+
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.OneWay;
+import org.oasisopen.sca.annotation.Remotable;
+
+import com.example.test.jaxb.client.CreditCardDetailsType;
+
+/**
+ * The bi-direction interface
+ */
+@Remotable
+@Callback(CreditCardPaymentCallback.class)
+public interface CreditCardPaymentRequestClient {
+    @OneWay
+    void authorizeRequest(CreditCardDetailsType creditCard, float amount);
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,65 @@
+/*
+ * 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.    
+ */
+
+package test.server;
+
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.Service;
+
+import test.client.CreditCardPaymentCallback;
+
+import com.example.test.jaxb.server.CreditCardDetailsType;
+import com.example.test.jaxws.server.AuthorizeFault;
+import com.example.test.jaxws.server.CreditCardPayment;
+
+/**
+ * Mocked implementation of CreditCardPayment 
+ */
+@Service({CreditCardPayment.class, CreditCardPaymentRequestServer.class})
+public class CreditCardPaymentImpl implements CreditCardPayment, CreditCardPaymentRequestServer {
+    @Callback
+    protected CreditCardPaymentCallback callback;
+
+    @Override
+    public void authorizeRequest(CreditCardDetailsType creditCard, float amount) {
+        String status;
+        try {
+            status = authorize(creditCard, amount);
+        } catch (AuthorizeFault e) {
+            status = "FAIL: " + e.getFaultInfo().getErrorCode();
+        }
+        callback.authorizeResponse(creditCard.getCreditCardNumber(), status);
+    }
+
+    @Override
+    public String authorize(CreditCardDetailsType creditCard, float amount) throws AuthorizeFault {
+        if (creditCard != null) {
+            System.out.println("Checking card: name = " + creditCard.getCardOwner().getName()
+                + " number = "
+                + creditCard.getCreditCardNumber()
+                + " for amount "
+                + amount);
+        } else {
+            System.out.println("Checking card is null");
+        }
+
+        return "OK";
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,38 @@
+/*
+ * 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.    
+ */
+
+package test.server;
+
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.OneWay;
+import org.oasisopen.sca.annotation.Remotable;
+
+import test.client.CreditCardPaymentCallback;
+
+import com.example.test.jaxb.server.CreditCardDetailsType;
+
+/**
+ * The bi-direction interface
+ */
+@Remotable
+@Callback(CreditCardPaymentCallback.class)
+public interface CreditCardPaymentRequestServer {
+    @OneWay
+    void authorizeRequest(CreditCardDetailsType creditCard, float amount);
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties Fri Sep 24 17:19:06 2010
@@ -0,0 +1,39 @@
+ # 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.    
+java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
+
+# use the following property to configure the default connector
+java.naming.provider.url = vm://localhost?broker.persistent=false
+
+# use the following property to specify the JNDI name the connection factory
+# should appear as. 
+#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
+connectionFactoryNames = ConnectionFactory
+
+# register some queues in JNDI using the form
+# queue.[jndiName] = [physicalName]
+queue.RequestQueue = RequestQueue
+queue.ResponseQueue = ResponseQueue
+
+queue.CreditCardPayment = CreditCardPaymentQueue
+queue.CreditCardPaymentRequestServer = CreditCardPaymentRequestServerQueue
+
+# register some topics in JNDI using the form
+# topic.[jndiName] = [physicalName]
+#topic.MyTopic = example.MyTopic
+
+# END SNIPPET: jndi

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/jndi.properties
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite Fri Sep 24 17:19:06 2010
@@ -0,0 +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.    
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" targetNamespace="http://www.example.com"
+    xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" name="CreditCardComposite">
+
+    <component name="CreditCardPaymentComponent">
+        <implementation.java class="test.server.CreditCardPaymentImpl" />
+        <service name="CreditCardPayment">
+            <binding.jms>
+                <tuscany:wireFormat.jmsTextXML />
+                <destination jndiName="CreditCardPayment" />
+            </binding.jms>
+        </service>
+        
+         <service name="CreditCardPaymentRequestServer">
+            <binding.jms>
+                <tuscany:wireFormat.jmsTextXML />
+                <destination jndiName="CreditCardPaymentRequestServer" />
+            </binding.jms>
+        </service>
+    </component>
+
+    <component name="CreditCardClientComponent">
+        <implementation.java class="test.client.CreditCardPaymentClientImpl" />
+        <reference name="proxy" target="CreditCardPaymentComponent/CreditCardPayment" />
+        <reference name="asyncProxy" target="CreditCardPaymentComponent/CreditCardPaymentRequestServer" />
+    </component>
+
+</composite>

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/test/client/creditcard-client.composite
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml Fri Sep 24 17:19:06 2010
@@ -0,0 +1,29 @@
+<?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.    
+-->
+<bindings
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    wsdlLocation="creditcard.wsdl"
+    xmlns="http://java.sun.com/xml/ns/jaxws">
+    <bindings node="wsdl:definitions">
+        <package name="com.example.test.jaxws.client"/>
+        <enableAsyncMapping>true</enableAsyncMapping>
+    </bindings>
+</bindings>
\ No newline at end of file

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-client.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml Fri Sep 24 17:19:06 2010
@@ -0,0 +1,29 @@
+<?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.    
+-->
+<bindings
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    wsdlLocation="creditcard.wsdl"
+    xmlns="http://java.sun.com/xml/ns/jaxws">
+    <bindings node="wsdl:definitions">
+        <package name="com.example.test.jaxws.server"/>
+        <enableAsyncMapping>false</enableAsyncMapping>
+    </bindings>
+</bindings>
\ No newline at end of file

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard-server.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl Fri Sep 24 17:19:06 2010
@@ -0,0 +1,125 @@
+<?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.    
+-->
+<wsdl:definitions name="CreditCardPayment" targetNamespace="http://www.example.com/CreditCardPayment/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.example.com/CreditCardPayment/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+    <wsdl:types>
+        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/CreditCardPayment/"
+            xmlns:tns="http://www.example.com/CreditCardPayment/">
+
+            <!-- https://jaxb.dev.java.net/issues/show_bug.cgi?id=518 -->
+            <!-- I have to change the complex types to be annoymous -->
+            <xsd:element name="authorize">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+                        <xsd:element name="Amount" type="xsd:float"></xsd:element>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+
+            <xsd:element name="authorizeResponse">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="Status" type="xsd:string"></xsd:element>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+
+            <xsd:complexType name="CreditCardDetailsType">
+                <xsd:sequence>
+                    <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+                    <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+                    <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+                    <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+                    <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+                    <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+                </xsd:sequence>
+            </xsd:complexType>
+            <xsd:simpleType name="CreditCardTypeType">
+                <xsd:restriction base="xsd:token">
+                    <xsd:enumeration value="Visa" />
+                    <xsd:enumeration value="MasterCard" />
+                    <xsd:enumeration value="Discover" />
+                    <xsd:enumeration value="Amex" />
+                </xsd:restriction>
+            </xsd:simpleType>
+            <xsd:complexType name="PayerType">
+                <xsd:sequence>
+                    <xsd:element name="Name" type="xsd:string" />
+                    <xsd:element name="Address" type="tns:AddressType" />
+                </xsd:sequence>
+            </xsd:complexType>
+            <xsd:complexType name="AddressType">
+                <xsd:sequence>
+                    <xsd:element name="Street" type="xsd:string" />
+                    <xsd:element name="City" type="xsd:string" />
+                    <xsd:element name="State" type="xsd:string" />
+                    <xsd:element name="ZipCode" type="xsd:string" />
+                    <xsd:element name="HomePhone" type="xsd:string" />
+                </xsd:sequence>
+            </xsd:complexType>
+            <xsd:element name="authorizeFault">
+                <xsd:complexType>
+                    <xsd:sequence>
+                        <xsd:element name="errorCode" type="xsd:string"></xsd:element>
+                    </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+        </xsd:schema>
+    </wsdl:types>
+    <wsdl:message name="AuthorizeRequest">
+        <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+    </wsdl:message>
+    <wsdl:message name="AuthorizeResponse">
+        <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+    </wsdl:message>
+    <wsdl:message name="AuthorizeFault">
+        <wsdl:part name="parameters" element="tns:authorizeFault"></wsdl:part>
+    </wsdl:message>
+    <wsdl:portType name="CreditCardPayment">
+        <wsdl:operation name="authorize">
+            <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+            <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+            <wsdl:fault name="authorizationFailure" message="tns:AuthorizeFault"></wsdl:fault>
+        </wsdl:operation>
+    </wsdl:portType>
+    <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+        <wsdl:operation name="authorize">
+            <soap:operation soapAction="http://www.example.com/CreditCardPayment/authorize" />
+            <wsdl:input>
+                <soap:body use="literal" />
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body use="literal" />
+            </wsdl:output>
+            <wsdl:fault name="authorizationFailure">
+                <soap:fault name="authorizationFailure" use="literal" />
+            </wsdl:fault>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="CreditCardPaymentService">
+        <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+            <soap:address location="http://localhost:8080/CreditCardPayment" />
+        </wsdl:port>
+    </wsdl:service>
+
+</wsdl:definitions>
\ No newline at end of file

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/main/resources/wsdl/creditcard.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java?rev=1000980&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java (added)
+++ tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java Fri Sep 24 17:19:06 2010
@@ -0,0 +1,83 @@
+/*
+ * 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.    
+ */
+package itest;
+
+import java.util.concurrent.ExecutionException;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import test.client.CreditCardClient;
+
+/**
+ * A test case for two SCA components exchange data via binding.jms
+ */
+public class CreditCardTestCase {
+
+    private static Node node;
+    private static CreditCardClient client;
+
+    @BeforeClass
+    public static void init() throws Exception {
+        String contribution = ContributionLocationHelper.getContributionLocation(CreditCardClient.class);
+        node =
+            NodeFactory.newInstance().createNode("test/client/creditcard-client.composite",
+                                                 new Contribution("cc", contribution));
+        node.start();
+
+        client = node.getService(CreditCardClient.class, "CreditCardClientComponent/CreditCardClient");
+    }
+
+    @AfterClass
+    public static void destroy() throws Exception {
+        if (node != null) {
+            node.stop();
+        }
+    }
+
+    @Test
+    public void testCreditCard() {
+        String status = client.authorize("123", "John", 100.0f);
+        Assert.assertEquals("OK", status);
+    }
+
+    @Test
+    public void testCreditCardAsync() throws InterruptedException, ExecutionException {
+        String result = client.authorizeAsync("456", "Mary", 120.0f);
+        Assert.assertEquals("OK", result);
+    }
+
+    @Test
+    public void testCreditCardAsyncWithCallback() throws InterruptedException, ExecutionException {
+        String result = client.authorizeAsyncWithCallback("789", "Smith", 180.0f);
+        Assert.assertEquals("OK", result);
+    }
+    
+    @Test
+    public void testCreditCardSCAAsyncWithCallback() throws InterruptedException, ExecutionException {
+        String result = client.authorizeSCAAsyncWithCallback("888", "Jane", 110.0f);
+        Assert.assertEquals("OK", result);
+    }
+}

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/itest/async-interactions/src/test/java/itest/CreditCardTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date