summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src')
-rw-r--r--sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculateViaAsyncRef.java12
-rw-r--r--sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorClient.java2
-rw-r--r--sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorServiceImpl.java48
-rw-r--r--sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/resources/CalculatorClient.composite2
4 files changed, 57 insertions, 7 deletions
diff --git a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculateViaAsyncRef.java b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculateViaAsyncRef.java
index e370bd915b..2d3fc97bb0 100644
--- a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculateViaAsyncRef.java
+++ b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculateViaAsyncRef.java
@@ -13,6 +13,16 @@ import javax.xml.ws.Response;
public interface CalculateViaAsyncRef {
- public Response<String> calculate( Integer i1);
+ //public Response<String> calculate( Integer i1);
+
+ // Sync
+ public String calculate(Integer i1);
+
+ // Aysnc Poll
+ public Future<String> calculateAsync(Integer i1);
+
+ // Async Callback
+ public Future<String> calculateAsync(Integer i1, AsyncHandler<String> handler);
}
+
diff --git a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorClient.java b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorClient.java
index 60c7d8d3ce..fd92647dd1 100644
--- a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorClient.java
+++ b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorClient.java
@@ -33,11 +33,13 @@ public class CalculatorClient {
private CalculatorService calculatorService;
+
@Reference
public void setCalculatorService(CalculatorService calculatorService) {
this.calculatorService = calculatorService;
}
+
@Init
public void calculate() {
diff --git a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorServiceImpl.java b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorServiceImpl.java
index 8352a528d7..da9963087f 100644
--- a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorServiceImpl.java
+++ b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/java/calculator/CalculatorServiceImpl.java
@@ -18,20 +18,58 @@
*/
package calculator;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import javax.xml.ws.AsyncHandler;
+
+import org.oasisopen.sca.annotation.Reference;
+
/**
* An implementation of the Calculator service.
*/
public class CalculatorServiceImpl implements CalculatorService {
+
+ @Reference
+ protected CalculateViaAsyncRef calculatorRefSyncService;
+
+ @Reference
+ protected CalculateViaAsyncRef calculatorRefAsyncService;
@Override
public String calculate(Integer n1) {
-
- // TODO brute force search for divisors of n1 (http://en.wikipedia.org/wiki/Brute-force_search)
- // which should give a nice example of a method that takes a long time if given a
- // big enough input parameter
- return "1 2";
+
+ // sync
+ String result = calculatorRefSyncService.calculate(1);
+
+ // async poll
+ Future<String> future = calculatorRefAsyncService.calculateAsync(2);
+
+ while (!future.isDone()){
+ System.out.println("Waiting for poll");
+ }
+
+ try {
+ result = future.get();
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ExecutionException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // async callback
+// AsyncHandler<String> handler = new AsyncHandler<String>();
+// future = calculatorRef.calculateAsync(3, handler);
+/*
+ while (!future.isDone()){
+ System.out.println("Waiting for callback");
+ }
+*/
+ return result;
}
diff --git a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/resources/CalculatorClient.composite b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/resources/CalculatorClient.composite
index dfd32761be..374ef27e2b 100644
--- a/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/resources/CalculatorClient.composite
+++ b/sca-java-2.x/trunk/contrib/samples/async/sample-contribution-implementation-java-calculator-async/src/main/resources/CalculatorClient.composite
@@ -25,6 +25,6 @@
<component name="CalculatorClient">
<implementation.java class="calculator.CalculatorClient"/>
<reference name="calculatorService" target="CalculatorServiceComponent" />
- </component>
+ </component>
</composite>