summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src')
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java38
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java26
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java38
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java104
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java70
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite34
-rw-r--r--branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java118
7 files changed, 428 insertions, 0 deletions
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.java
new file mode 100644
index 0000000000..a7040f944e
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/AComponent.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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference;
+
+import org.oasisopen.sca.annotation.Conversational;
+
+/**
+ * Simple Service A.
+ */
+@Conversational
+public interface AComponent {
+
+ public String getName();
+
+ public String getServiceName();
+ public String getBusinessInterfaceName();
+ public boolean isConversational();
+ public void testConversationID();
+ public String getCallbackResult();
+
+}
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java
new file mode 100644
index 0000000000..707568e507
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BCallback.java
@@ -0,0 +1,26 @@
+/*
+ * 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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference;
+
+public interface BCallback {
+
+ public void processResults(String result);
+
+}
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.java
new file mode 100644
index 0000000000..18fcaee6ee
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/BComponent.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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference;
+
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.Conversational;
+
+/**
+ * Simple Service B.
+ */
+@Conversational
+@Callback(BCallback.class)
+public interface BComponent {
+
+ public String getName();
+
+ public void testCallback();
+ public void testConversationID();
+ public void testNonNullConversation();
+
+}
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java
new file mode 100644
index 0000000000..70a257d19f
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/AComponentImpl.java
@@ -0,0 +1,104 @@
+/*
+ * 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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.impl;
+
+import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.AComponent;
+import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BCallback;
+import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BComponent;
+import org.junit.Assert;
+import org.oasisopen.sca.CallableReference;
+import org.oasisopen.sca.ComponentContext;
+import org.oasisopen.sca.ServiceReference;
+import org.oasisopen.sca.annotation.Context;
+import org.oasisopen.sca.annotation.ConversationID;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(AComponent.class)
+@Scope("CONVERSATION")
+public class AComponentImpl implements AComponent, BCallback {
+
+ private static Object monitor = new Object();
+ private static String returnMessage = null;
+
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected CallableReference<BComponent> bReference;
+
+ @ConversationID
+ protected String cid;
+
+ public String getName() {
+ return "ComponentA";
+ }
+
+ @Context
+ public void setComponentContext(ComponentContext context) {
+ this.componentContext = context;
+ }
+
+ public String getServiceName() {
+ return bReference.getService().getName();
+ }
+
+ public String getBusinessInterfaceName() {
+ return bReference.getBusinessInterface().getSimpleName();
+ }
+
+ public boolean isConversational() {
+ return bReference.isConversational();
+ }
+
+ public void testConversationID() {
+ ServiceReference<BComponent> bSR = componentContext.getServiceReference(BComponent.class, "bReference");
+ bSR.setConversationID("AConversationID");
+ bSR.getService().testConversationID();
+
+ Assert.assertEquals("AConversationID", bSR.getConversation().getConversationID());
+ }
+
+ public String getCallbackResult() {
+ ServiceReference<BComponent> bSR = componentContext.getServiceReference(BComponent.class, "bReference");
+ String cbID = "ComponentACallBack";
+ bSR.setCallbackID(cbID);
+ bSR.getService().testCallback();
+
+ // Wait for 30s max.
+ int count = 0;
+ synchronized(monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ return returnMessage;
+ }
+
+ public void processResults(String result) {
+ returnMessage = result;
+ }
+
+}
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java
new file mode 100644
index 0000000000..ea4c71d27a
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/impl/BComponentImpl.java
@@ -0,0 +1,70 @@
+/*
+ * 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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.impl;
+
+import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BCallback;
+import org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.BComponent;
+import org.junit.Assert;
+import org.oasisopen.sca.CallableReference;
+import org.oasisopen.sca.ComponentContext;
+import org.oasisopen.sca.annotation.Callback;
+import org.oasisopen.sca.annotation.Context;
+import org.oasisopen.sca.annotation.ConversationID;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+@Service(BComponent.class)
+@Scope("CONVERSATION")
+public class BComponentImpl implements BComponent {
+
+ protected ComponentContext componentContext;
+
+ @Callback
+ protected BCallback callback;
+
+ @ConversationID
+ protected String cid;
+
+ @Context
+ public void setComponentContext(ComponentContext context) {
+ this.componentContext = context;
+ }
+
+ public String getName() {
+ return "ComponentB";
+ }
+
+ public void testCallback() {
+ callback = componentContext.getRequestContext().getCallback();
+ callback.processResults("CallBackFromB");
+
+ CallableReference<BCallback> bCR = componentContext.getRequestContext().getCallbackReference();
+ Assert.assertEquals("ComponentACallBack", bCR.getCallbackID());
+ }
+
+ public void testConversationID() {
+ Assert.assertEquals("AConversationID", cid);
+ }
+
+ public void testNonNullConversation() {
+ Assert.assertNotNull(componentContext.getRequestContext().getServiceReference().getConversation());
+ }
+
+}
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite
new file mode 100644
index 0000000000..f997d78bb5
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/main/resources/callablereference.composite
@@ -0,0 +1,34 @@
+<?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://www.osoa.org/xmlns/sca/1.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://java-api-tests"
+ name="CallableReference-Composite">
+
+ <component name="AComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.impl.AComponentImpl"/>
+ <reference name="bReference" target="BComponent"/>
+ </component>
+
+ <component name="BComponent">
+ <implementation.java class="org.apache.tuscany.sca.vtest.javaapi.apis.callablereference.impl.BComponentImpl"/>
+ </component>
+
+</composite>
diff --git a/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java
new file mode 100644
index 0000000000..4d0d8338ba
--- /dev/null
+++ b/branches/sca-java-2.0-M2/vtest/java-api/apis/callablereference/src/test/java/org/apache/tuscany/sca/vtest/javaapi/apis/callablereference/CallableReferenceTestCase.java
@@ -0,0 +1,118 @@
+/*
+ * 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 org.apache.tuscany.sca.vtest.javaapi.apis.callablereference;
+
+import org.apache.tuscany.sca.vtest.utilities.ServiceFinder;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * This test class tests the CallableReference interface described in 1.7.3 of
+ * the SCA Java Annotations & APIs Specification 1.0.
+ */
+public class CallableReferenceTestCase {
+
+ protected static String compositeName = "callablereference.composite";
+ protected static AComponent a;
+ protected static BComponent b;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ System.out.println("Setting up");
+ ServiceFinder.init(compositeName);
+ a = ServiceFinder.getService(AComponent.class, "AComponent");
+ b = ServiceFinder.getService(BComponent.class, "BComponent");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ System.out.println("Cleaning up");
+ ServiceFinder.cleanup();
+ }
+
+ /**
+ * Lines 884 <br>
+ * getService() - Returns a type-safe reference to the target of this
+ * reference. The instance returned is guaranteed to implement the business
+ * interface for this reference. The value returned is a proxy to the target
+ * that implements the business interface associated with this reference.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testGetService() throws Exception {
+ Assert.assertEquals("ComponentB", a.getServiceName());
+ }
+
+ /**
+ * Lines 885 <br>
+ * getBusinessInterface() – Returns the Java class for the business
+ * interface associated with this reference.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testGetBusinessInterface() throws Exception {
+ Assert.assertEquals("BComponent", a.getBusinessInterfaceName());
+ }
+
+ /**
+ * Lines 886 <br>
+ * isConversational() – Returns true if this reference is conversational.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testIsConversational() throws Exception {
+ Assert.assertEquals(true, a.isConversational());
+ }
+
+ /**
+ * Lines 887 <br>
+ * getConversation() – Returns the conversation associated with this
+ * reference. Returns null if no conversation is currently active.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testGetConversation() throws Exception {
+ a.testConversationID();
+ b.testNonNullConversation();
+ }
+
+ /**
+ * Lines 888 <br>
+ * getCallbackID() – Returns the callback ID.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testGetCallbackID() throws Exception {
+ // Actual test is in BComponentImpl. Below is an extra test.
+ Assert.assertEquals("CallBackFromB", a.getCallbackResult());
+ }
+
+}