Author: slaws
Date: Mon Oct 31 10:21:51 2011
New Revision: 1195392

URL: http://svn.apache.org/viewvc?rev=1195392&view=rev
Log:
TUSCANY-3757 - add async invocation sample back in from contrib in order to 
look at void return types which still don't work. 

Added:
    tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/   (with 
props)
    tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/pom.xml
    tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/   
(with props)
    tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/ 
  (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculateReferenceAsync.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorAsyncHandler.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorClient.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorPrintAsyncHandler.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsync.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsyncImpl.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceProxyImpl.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSync.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSyncImpl.java
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/Calculator.composite
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/CalculatorClient.composite
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/sca-contribution.xml
    tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/ 
  (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/
   (with props)
    
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/CalculatorTestCase.java
Modified:
    tuscany/sca-java-2.x/trunk/samples/learning-more/contribution-osgi/pom.xml
    tuscany/sca-java-2.x/trunk/samples/learning-more/pom.xml

Propchange: tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Oct 31 10:21:51 2011
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target

Added: tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/pom.xml?rev=1195392&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/pom.xml 
(added)
+++ tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/pom.xml 
Mon Oct 31 10:21:51 2011
@@ -0,0 +1,79 @@
+<?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.samples</groupId>
+        <artifactId>tuscany-samples</artifactId>
+        <version>2.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+    <artifactId>sample-async-invocation</artifactId>
+    <name>Apache Tuscany SCA Sample Async Invocation</name>
+
+    <!-- ASF repositories so sample can be built from SVN without building 
trunk-->
+    <repositories><repository>
+        <id>apache.snapshots</id>
+        <name>Apache Snapshot Repository</name>
+        <url>http://repository.apache.org/snapshots</url>
+        <releases><enabled>false</enabled></releases>
+    </repository></repositories>
+    <pluginRepositories><pluginRepository>
+        <id>apache.snapshots</id>
+        <name>Apache Snapshot Repository</name>
+        <url>http://repository.apache.org/snapshots</url>
+        <releases><enabled>false</enabled></releases>
+    </pluginRepository></pluginRepositories>
+   
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-sca-api</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-base-runtime-pom</artifactId>
+            <type>pom</type>
+            <version>2.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>         
+       
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <finalName>${project.artifactId}</finalName>
+       <plugins>
+         <plugin>
+             <groupId>org.apache.tuscany.maven.plugins</groupId>
+             <artifactId>maven-tuscany-plugin</artifactId>
+             <version>2.0-SNAPSHOT</version>
+         </plugin>
+       </plugins>
+    </build>
+
+</project>

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/
------------------------------------------------------------------------------
    bugtraq:number = true

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculateReferenceAsync.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculateReferenceAsync.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculateReferenceAsync.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculateReferenceAsync.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,57 @@
+/*
+ * 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 calculator;
+
+import java.util.concurrent.Future;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * Async client version of the CalculatorService interface
+ *
+ */
+
+@Remotable
+public interface CalculateReferenceAsync {
+       
+       // Sync
+       public String calculate(Integer i1);
+       
+       // Aysnc Poll
+       public Response<String> calculateAsync(Integer i1);
+       
+       // Async Callback
+       public Future<String> calculateAsync(Integer i1, AsyncHandler<String> 
handler);
+
+
+       // Sync
+    public void print(Integer i1);
+    
+    // Aysnc Poll
+    public Response<Void> printAsync(Integer i1);
+    
+    // Async Callback
+    public Future<Void> printAsync(Integer i1, AsyncHandler<Void> handler);
+       
+}
+

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorAsyncHandler.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorAsyncHandler.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorAsyncHandler.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorAsyncHandler.java
 Mon Oct 31 10:21:51 2011
@@ -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 calculator;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+/**
+ * Handles callbacks to the async client
+ */
+
+public class CalculatorAsyncHandler implements AsyncHandler<String> {
+    public void handleResponse(Response<String> res) {
+        try {
+            System.out.println("Async client callback patern: result in 
handler = " + res.get());
+        } catch(Exception ex){
+            System.out.println("Async client callback patern: exception in 
handler = " + ex.getMessage());
+        }
+    }
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorClient.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorClient.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorClient.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorClient.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,52 @@
+/*
+ * 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 calculator;
+
+import org.oasisopen.sca.annotation.EagerInit;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+@Scope("COMPOSITE") @EagerInit
+public class CalculatorClient {
+    
+    private CalculatorServiceSync calculatorService;
+
+
+    @Reference
+    public void setCalculatorService(CalculatorServiceSync calculatorService) {
+        this.calculatorService = calculatorService;
+    }
+    
+    @Init
+    public void calculate() {
+        System.out.println("calculation=" + calculatorService.calculate(20));
+        System.out.println("print");
+        /* TUSCANY-3757
+        calculatorService.print(27);
+        */
+    }
+    
+
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorPrintAsyncHandler.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorPrintAsyncHandler.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorPrintAsyncHandler.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorPrintAsyncHandler.java
 Mon Oct 31 10:21:51 2011
@@ -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 calculator;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+/**
+ * Handles callbacks to the async client
+ */
+
+public class CalculatorPrintAsyncHandler implements AsyncHandler<Void> {
+    public void handleResponse(Response<Void> res) {
+        try {
+            System.out.println("Async client callback patern: result in print 
handler = " + res.get());
+        } catch(Exception ex){
+            System.out.println("Async client callback patern: exception in 
print handler = " + ex.getMessage());
+        }
+    }
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsync.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsync.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsync.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsync.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,34 @@
+/*
+ * 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 calculator;
+
+import org.oasisopen.sca.ResponseDispatch;
+import org.oasisopen.sca.annotation.AsyncInvocation;
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The async Calculator service interface.
+ */
+
+@Remotable
+@AsyncInvocation
+public interface CalculatorServiceAsync {
+    void calculateAsync(Integer n1, ResponseDispatch<String> response);
+    void printAsync(Integer n1, ResponseDispatch<Void> response);
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsyncImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsyncImpl.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsyncImpl.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceAsyncImpl.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,41 @@
+/*
+ * 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 calculator;
+
+import org.oasisopen.sca.ResponseDispatch;
+
+public class CalculatorServiceAsyncImpl implements CalculatorServiceAsync {
+
+       @Override
+       public void calculateAsync(Integer n1, ResponseDispatch<String> 
response) {
+           int result = n1 + n1;
+           String retval = "async service invoked: " + n1 + " + " + n1 + " = " 
+ result;
+               
+           response.sendResponse(retval);
+       }
+       
+    @Override
+    public void printAsync(Integer n1, ResponseDispatch<Void> response) {
+        int result = n1 + n1;
+        String retval = "async service invoked: " + n1 + " + " + n1 + " = " + 
result;
+        System.out.println(retval);
+    }  
+
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceProxyImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceProxyImpl.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceProxyImpl.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceProxyImpl.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,128 @@
+/*
+ * 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 calculator;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import javax.xml.ws.Response;
+
+import org.oasisopen.sca.annotation.Reference;
+
+/**
+ * An implementation of the Calculator service which just proxies
+ * to sync and asyn versions of the calculator service. This proxy
+ * exercises the various async interface alternatives
+ */
+public class CalculatorServiceProxyImpl implements CalculatorServiceSync {
+       
+       @Reference
+       protected CalculateReferenceAsync calculatorServiceRefSync;
+       
+       @Reference
+       protected CalculateReferenceAsync calculatorServiceRefAsync;
+
+       @Override
+       public String calculate(Integer n1) {
+           String result = null;
+           
+           // calculate using a sync service
+           System.out.println("Calling sync service for calculate");
+           result = calculate(calculatorServiceRefSync, n1);
+           
+           // calculate using an aycn service
+           System.out.println("Calling async service for calculate");
+           result += calculate(calculatorServiceRefAsync, n1);
+           
+           return result;
+       }    
+           
+       // exercise sync and async versions of a service interface method
+       private String calculate(CalculateReferenceAsync calculatorRef, Integer 
n1) {       
+               
+               // sync
+               String result = calculatorRef.calculate(1);
+               System.out.println("Sync client patern: result = " + result);
+               
+               // async poll
+               Response<String> response = calculatorRef.calculateAsync(20);
+               
+               while (!response.isDone()){
+                       System.out.println("Waiting for poll");
+                       try {
+                           Thread.sleep(500);
+                       } catch (Exception ex) {
+                           // do nothing
+                       }
+               }
+               
+               try {
+                       result = response.get();
+                       System.out.println("Async client poll patern: result = 
" + result);
+               } catch (InterruptedException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (ExecutionException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               
+               // async callback 
+               CalculatorAsyncHandler handler = new CalculatorAsyncHandler();
+               Future<String> future = calculatorRef.calculateAsync(3, 
handler);
+               
+               while (!future.isDone()){
+                       System.out.println("Waiting for callback");
+               try {
+                Thread.sleep(500);
+            } catch (Exception ex) {
+                // do nothing
+            }
+               }
+
+               return result;
+       }
+       
+    @Override
+    public void print(Integer n1) {
+        
+        // calculate using a sync service
+        System.out.println("Calling sync service for print");
+        print(calculatorServiceRefSync, n1);
+        
+        // calculate using an asycn service
+        System.out.println("Calling async service for print");
+        print(calculatorServiceRefAsync, n1);
+    }    
+         
+    // exercise sync and async versions of a service interface method
+    private void print(CalculateReferenceAsync calculatorRef, Integer n1) {    
   
+        
+        // sync
+        calculatorRef.print(1);
+        
+        // async poll
+        Response<Void> response = calculatorRef.printAsync(20);
+    
+        // async callback 
+        CalculatorPrintAsyncHandler handler = new 
CalculatorPrintAsyncHandler();
+        Future<Void> future = calculatorRef.printAsync(3, handler);
+      
+    }  
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSync.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSync.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSync.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSync.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,31 @@
+/*
+ * 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 calculator;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The sync Calculator service interface.
+ */
+
+@Remotable
+public interface CalculatorServiceSync {
+    String calculate(Integer n1);
+    void print(Integer n1);
+}

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSyncImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSyncImpl.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSyncImpl.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/java/calculator/CalculatorServiceSyncImpl.java
 Mon Oct 31 10:21:51 2011
@@ -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 calculator;
+
+public class CalculatorServiceSyncImpl implements CalculatorServiceSync {
+
+       @Override
+       public String calculate(Integer n1) {
+           int result = n1 + n1;
+               String retval = "sync service invoked: " + n1 + " + " + n1 + " 
= " + result;
+               return retval;
+       }
+       
+       @Override
+    public void print(Integer n1) {
+        int result = n1 + n1;
+        String retval = "sync service invoked: " + n1 + " + " + n1 + " = " + 
result;
+        System.out.println(retval);
+    }
+
+}

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/
------------------------------------------------------------------------------
    bugtraq:number = true

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/Calculator.composite
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/Calculator.composite?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/Calculator.composite
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/Calculator.composite
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,43 @@
+<?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://sample";
+           xmlns:sample="http://sample";
+           xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912";
+           name="Calculator">
+
+    <component name="CalculatorServiceComponent">
+               <implementation.java 
class="calculator.CalculatorServiceProxyImpl"/>
+        <reference name="calculatorServiceRefSync" target="CalculatorSync"/>
+        <reference name="calculatorServiceRefAsync" target="CalculatorAsync"/>
+    </component>
+
+    <component name="CalculatorSync">
+        <implementation.java class="calculator.CalculatorServiceSyncImpl"/>
+    </component>
+    
+    <component name="CalculatorAsync">
+        <implementation.java class="calculator.CalculatorServiceAsyncImpl"/>
+        <service name="CalculatorServiceAsync">
+            <binding.ws uri="http://localhost:8085/CalculatorAsync"/>
+        </service>
+    </component>
+
+</composite>

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/CalculatorClient.composite
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/CalculatorClient.composite?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/CalculatorClient.composite
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/CalculatorClient.composite
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,30 @@
+<?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://sample";
+           xmlns:sample="http://sample";
+           name="CalculatorClient">
+
+    <component name="CalculatorClient">
+               <implementation.java class="calculator.CalculatorClient"/>
+        <reference name="calculatorService" 
target="CalculatorServiceComponent" />
+     </component>
+
+</composite>

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/
------------------------------------------------------------------------------
    bugtraq:number = true

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/sca-contribution.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/sca-contribution.xml?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/sca-contribution.xml
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/main/resources/META-INF/sca-contribution.xml
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,24 @@
+<?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.    
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912";
+              xmlns:sample="http://sample";>
+   <deployable composite="sample:Calculator"/>
+   <deployable composite="sample:CalculatorClient"/>
+</contribution>
\ No newline at end of file

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/
------------------------------------------------------------------------------
    bugtraq:number = true

Propchange: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/
------------------------------------------------------------------------------
    bugtraq:number = true

Added: 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/CalculatorTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/CalculatorTestCase.java?rev=1195392&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/CalculatorTestCase.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/samples/learning-more/async-invocation/src/test/java/calculator/CalculatorTestCase.java
 Mon Oct 31 10:21:51 2011
@@ -0,0 +1,63 @@
+/*
+ * 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 calculator;
+
+import java.net.URI;
+
+import org.junit.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchServiceException;
+import org.oasisopen.sca.client.SCAClientFactory;
+
+/*
+ * A unit test for the Calculator composite that just fires up the
+ * composite and expects the EagerInit of the CalculatorClient component
+ * to do its thing
+ */
+public class CalculatorTestCase {
+
+    @Test
+    public void testCalculate() throws NoSuchServiceException {
+
+        // Run the SCA composite in a Tuscany runtime
+         //TuscanyRuntime.runComposite("Calculator.composite", 
"target/classes");
+        Node node = null;
+            
+        try {
+            TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
+            node = tuscanyRuntime.createNode();
+            node.installContribution("AsyncSample", "target/classes", null, 
null);
+            node.startComposite("AsyncSample", "Calculator.composite");
+            node.startComposite("AsyncSample", "CalculatorClient.composite");
+            
+            SCAClientFactory scaClientFactory = 
SCAClientFactory.newInstance(URI.create("default"));
+            CalculatorClient calculatorClient = 
scaClientFactory.getService(CalculatorClient.class, "CalculatorClient");
+            
+            calculatorClient.calculate();
+        }catch (Exception e){
+            e.printStackTrace();      
+        } finally {
+            // Stop the Tuscany runtime Node
+            node.stop();        
+        }
+    }
+}

Modified: 
tuscany/sca-java-2.x/trunk/samples/learning-more/contribution-osgi/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/contribution-osgi/pom.xml?rev=1195392&r1=1195391&r2=1195392&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/learning-more/contribution-osgi/pom.xml 
(original)
+++ tuscany/sca-java-2.x/trunk/samples/learning-more/contribution-osgi/pom.xml 
Mon Oct 31 10:21:51 2011
@@ -32,7 +32,7 @@
    <artifactId>sample-contribution-osgi</artifactId>
    <version>2.0-SNAPSHOT</version>
 
-   <name>Apache Tuscany SCA Calculator OSGi Sample</name>
+   <name>Apache Tuscany SCA Sample Calculator OSGi</name>
 
    <properties>
       <tuscany.version>${project.version}</tuscany.version>

Modified: tuscany/sca-java-2.x/trunk/samples/learning-more/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/samples/learning-more/pom.xml?rev=1195392&r1=1195391&r2=1195392&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/samples/learning-more/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/samples/learning-more/pom.xml Mon Oct 31 
10:21:51 2011
@@ -29,7 +29,7 @@
     <artifactId>tuscany-samples-learning-more</artifactId>
     <version>2.0-SNAPSHOT</version>
     <packaging>pom</packaging>
-    <name>Apache Tuscany SCA Learning More</name>
+    <name>Apache Tuscany SCA Sample Learning More</name>
 
     <profiles>
         <profile>
@@ -38,6 +38,7 @@
                 <activeByDefault>true</activeByDefault>
             </activation>
             <modules>
+                <module>async-invocation</module>
                 <module>binding-comet</module>
                 <module>binding-websocket</module>
                 <module>contribution-osgi</module>


Reply via email to