summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java')
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardClient.java60
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java29
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java153
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java36
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java65
-rw-r--r--sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java38
6 files changed, 381 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardClient.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardClient.java
new file mode 100644
index 0000000000..6142f815af
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardClient.java
@@ -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);
+}
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java
new file mode 100644
index 0000000000..18cd13e671
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentCallback.java
@@ -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);
+}
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java
new file mode 100644
index 0000000000..0ff4dcce4b
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentClientImpl.java
@@ -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();
+ }
+ }
+
+}
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java
new file mode 100644
index 0000000000..1a1395a252
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/client/CreditCardPaymentRequestClient.java
@@ -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);
+}
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..07d0e03ecb
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentImpl.java
@@ -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";
+ }
+
+}
diff --git a/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java
new file mode 100644
index 0000000000..4741c6b8e7
--- /dev/null
+++ b/sca-java-2.x/trunk/testing/itest/async-interactions/src/main/java/test/server/CreditCardPaymentRequestServer.java
@@ -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);
+}