gammaRef = componentContext.getServiceReference(Gamma.class, "gamma");
+ gammaRef.getService().start();
+ return gammaRef;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/Gamma.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/Gamma.java
new file mode 100644
index 0000000000..e32051373f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/Gamma.java
@@ -0,0 +1,35 @@
+/*
+ * 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.itest.callablerefreturn;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Conversational
+public interface Gamma
+{
+ void start();
+
+ void doSomething();
+
+ @EndsConversation
+ void stop();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/GammaImpl.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/GammaImpl.java
new file mode 100644
index 0000000000..adf5a1c1ce
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callablerefreturn/GammaImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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.itest.callablerefreturn;
+
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("CONVERSATION")
+public class GammaImpl implements Gamma
+{
+ @ConversationID
+ protected String conversationId;
+
+
+ public void start()
+ {
+ System.out.println("Gamma:start(), conversationId=" + conversationId);
+ }
+
+
+ public void doSomething()
+ {
+ System.out.println("Gamma:doSomething(), conversationId=" + conversationId);
+ }
+
+
+ public void stop()
+ {
+ System.out.println("Gamma:stop(), conversationId=" + conversationId);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceConversationalTest.composite b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceConversationalTest.composite
new file mode 100644
index 0000000000..0bf8f7ef1e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceConversationalTest.composite
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceReturnTest.composite b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceReturnTest.composite
new file mode 100644
index 0000000000..5b3add1e61
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceReturnTest.composite
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceTest.composite b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceTest.composite
new file mode 100644
index 0000000000..49b75f56e4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/CallableReferenceTest.composite
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite
new file mode 100644
index 0000000000..9216f44191
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..95021f72a4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeA/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite
new file mode 100644
index 0000000000..42d739564c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..2edda61601
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/main/resources/nodeB/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceConversationalTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceConversationalTestCase.java
new file mode 100644
index 0000000000..a9cbb5d0a1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceConversationalTestCase.java
@@ -0,0 +1,109 @@
+/*
+ * 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.itest.callableref;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.callablerefconversational.ConversationalService;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.osoa.sca.ServiceReference;
+
+/**
+ * Simple test case that creates a ServiceReference to a Conversational Component
+ * using ComponentContext.createSelfReference()
+ *
+ * This test case is for TUSCANY-2208
+ *
+ * @version $Date$ $Revision$
+ */
+public class CallableReferenceConversationalTestCase {
+ private static SCADomain domain;
+ private static ConversationalService acomponent;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ domain = SCADomain.newInstance("CallableReferenceConversationalTest.composite");
+ Assert.assertNotNull(domain);
+ acomponent = domain.getService(ConversationalService.class, "ConversationalComponent");
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ /**
+ * This is a dummy test so that this Unit Test has a test so it will build.
+ * Once TUSCANY-2208 is fixed, this dummy test method can be removed
+ */
+ @Test
+ public void dummyTestRemoveWhenTuscany2208IsFixed() {
+ }
+
+ /**
+ * Tests creating Self References and validate them with Conversation IDs
+ */
+ // Disabled until TUSCANY-2208 is fixed
+ // @Test
+ public void testCreateSelfRefUsingConvID() {
+ Assert.assertNotNull(acomponent);
+
+ final Object origConvID = acomponent.getConversationID();
+ Assert.assertNotNull(origConvID);
+ final ServiceReference ref = acomponent.createSelfRef();
+ Assert.assertNotNull(ref);
+
+ final ConversationalService resolvedRef = ref.getService();
+ Assert.assertNotNull(resolvedRef);
+ final Object newConvID = resolvedRef.getConversationID();
+ Assert.assertNotNull(newConvID);
+
+ Assert.assertEquals(origConvID, newConvID);
+ }
+
+ /**
+ * Tests creating Self References and validate them with user specified data
+ */
+ // Disabled until TUSCANY-2208 is fixed
+ // @Test
+ public void testCreateSelfRefUsingUserData() {
+ Assert.assertNotNull(acomponent);
+
+ final String origUserData = acomponent.getUserData();
+ Assert.assertEquals(ConversationalService.DEFAULT_USER_DATA, origUserData);
+
+ final String userData = "Some new user data set at " + System.currentTimeMillis();
+ acomponent.setUserData(userData);
+
+ final ServiceReference ref = acomponent.createSelfRef();
+ Assert.assertNotNull(ref);
+
+ final ConversationalService resolvedRef = ref.getService();
+ Assert.assertNotNull(resolvedRef);
+ final String newUserData = resolvedRef.getUserData();
+ Assert.assertNotNull(newUserData);
+
+ Assert.assertEquals(userData, newUserData);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
new file mode 100644
index 0000000000..ba9020811c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
@@ -0,0 +1,145 @@
+/*
+ * 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.itest.callableref;
+
+
+import static junit.framework.Assert.assertEquals;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+/**
+ * Runs a distributed domain in a single VM by using and in memory
+ * implementation of the distributed domain
+ */
+public class CallableReferenceRemoteTestCase {
+
+ private static SCANode nodeA;
+ private static SCANode nodeB;
+
+ private static AComponent acomponent;
+
+ @BeforeClass
+ public static void init() throws Exception {
+
+ try {
+
+ System.out.println("Setting up nodes");
+
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ nodeA = nodeFactory.createSCANode(new File("src/main/resources/nodeA/CompositeA.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/nodeA").toURL().toString()));
+
+
+ nodeB = nodeFactory.createSCANode(new File("src/main/resources/nodeB/CompositeB.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/nodeB").toURL().toString()));
+
+
+ nodeA.start();
+ nodeB.start();
+
+ acomponent = ((SCAClient)nodeA).getService(AComponent.class, "AComponent/AComponent");
+
+ } catch (Throwable ex) {
+ System.out.println(ex.toString());
+ // Print detailed cause information.
+ ex.printStackTrace();
+ StringBuffer sb = new StringBuffer();
+ Throwable cause = ex.getCause();
+ while ( cause != null ) {
+ sb.append( " " );
+ System.out.println( sb.toString() + "Cause: " + cause );
+ if (cause instanceof java.lang.reflect.InvocationTargetException)
+ System.out.println( sb.toString() + "Target Exception: " + ((java.lang.reflect.InvocationTargetException)cause).getTargetException() );
+ cause = cause.getCause();
+ }
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ // stop the nodes and hence the domains they contain
+ nodeA.stop();
+ nodeB.stop();
+ }
+
+ //@Test
+ public void testKeepServerRunning1() throws Exception {
+ System.out.println("press enter to continue");
+ System.in.read();
+ }
+
+ @Test
+ public void testBReference() {
+ assertEquals("BComponent", acomponent.fooB());
+ }
+
+ @Test
+ public void testBCast() {
+ assertEquals("BComponent", acomponent.fooB1());
+ }
+
+ @Test
+ public void testCReference() {
+ assertEquals("CComponent", acomponent.fooC());
+ }
+
+ @Test
+ public void testCServiceReference() {
+ assertEquals("CComponent", acomponent.fooC1());
+ }
+
+ @Test
+ public void testDReferenceString() {
+ assertEquals("DAComponent", acomponent.fooStringD());
+ }
+
+ @Test
+ public void testDReference() {
+ assertEquals("DAComponent", acomponent.fooD());
+ }
+
+
+ @Test
+ public void testBCReference() {
+ assertEquals("BCComponent", acomponent.fooBC());
+ }
+
+ @Test
+ public void testRequiredFalseReference() {
+ try {
+ acomponent.invokeDReference();
+ } catch (Exception e) {
+ Assert.assertTrue(true);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceReturnTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceReturnTestCase.java
new file mode 100644
index 0000000000..f2d8fe5d64
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceReturnTestCase.java
@@ -0,0 +1,48 @@
+/*
+ * 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.itest.callableref;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.callablerefreturn.Alpha;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CallableReferenceReturnTestCase {
+ private static SCADomain domain;
+ private static Alpha alpha;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ domain = SCADomain.newInstance("CallableReferenceReturnTest.composite");
+ alpha = domain.getService(Alpha.class, "Alpha");
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ domain.close();
+ }
+
+ @Test
+ public void testCallableReferenceReturn() {
+ Assert.assertTrue(alpha.run());
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceTestCase.java
new file mode 100644
index 0000000000..d785a6a397
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceTestCase.java
@@ -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 org.apache.tuscany.sca.itest.callableref;
+
+import static junit.framework.Assert.assertEquals;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CallableReferenceTestCase {
+ private static SCADomain domain;
+ private static AComponent acomponent;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ domain = SCADomain.newInstance("CallableReferenceTest.composite");
+ acomponent = domain.getService(AComponent.class, "AComponent");
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ domain.close();
+ }
+
+ @Test
+ public void testBReference() {
+ assertEquals("BComponent", acomponent.fooB());
+ }
+
+ @Test
+ public void testBCast() {
+ assertEquals("BComponent", acomponent.fooB1());
+ }
+
+ @Test
+ public void testCReference() {
+ assertEquals("CComponent", acomponent.fooC());
+ }
+
+ @Test
+ public void testCServiceReference() {
+ assertEquals("CComponent", acomponent.fooC1());
+ }
+
+ @Test
+ public void testDReference() {
+ assertEquals("DAComponent", acomponent.fooD());
+ }
+
+ @Test
+ public void testBCReference() {
+ assertEquals("BCComponent", acomponent.fooBC());
+ }
+
+ @Test
+ public void testRequiredFalseReference() {
+ try {
+ acomponent.invokeDReference();
+ } catch (Exception e) {
+ Assert.assertTrue(true);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-api/pom.xml
new file mode 100644
index 0000000000..d351f7a813
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/pom.xml
@@ -0,0 +1,50 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-api
+ Apache Tuscany SCA iTest Callback API
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+
+ ${basedir}/../build-was-integration.xml
+ ${basedir}/../wasAdmin.py
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.java
new file mode 100644
index 0000000000..de17ba2f0d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ *
+ */
+public interface CallBackApiCallBack {
+ /**
+ * This function is defined in CallBackApiClientImpl
+ */
+ public void callBackMessage(String aString);
+
+ /**
+ * This function is defined in CallBackApiClientImpl
+ */
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.java
new file mode 100644
index 0000000000..5fd4a71466
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.java
@@ -0,0 +1,30 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackApiClient {
+ /**
+ * This function is defined in CallBackApiClientImpl
+ */
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java
new file mode 100644
index 0000000000..274984abb3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java
@@ -0,0 +1,206 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackApiClient.class)
+public class CallBackApiClientImpl implements CallBackApiClient, CallBackApiCallBack {
+
+ @Reference
+ protected CallBackApiService aCallBackService;
+
+ private static String returnMessage = null;
+ private static int callBackCount = 0;
+ private static Object monitor = new Object();
+
+ /**
+ * This test calls function test 3a,3a1,3b,3c
+ */
+ public void run() {
+
+ // This tests basic callback patterns.
+
+ // Test3a is the basic callback where the target calls back prior to
+ // returning to the client.
+ test3a();
+
+ test3a1();
+
+ // Test3b is where the target does not call back to the client.
+ test3b();
+
+ // Test3c is where the target calls back multiple times to the client.
+ test3c();
+
+ return;
+ }
+
+ /**
+ * This test is the basic callback where the target calls back prior to returning to the client.
+ */
+
+ private void test3a() {
+ aCallBackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackApiITest - test3a", "Who's There", this.getReturnMessage());
+
+ }
+
+ /**
+ * This test is the basic callback where the target calls back prior to returning to the client.
+ */
+ private void test3a1() {
+ aCallBackService.knockKnockByRef("Knock Knock");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackApiITest - test3a", "Who's There", this.getReturnMessage());
+
+ }
+
+ /**
+ * This test is the basic callback where the target does not call back to the client
+ */
+ private void test3b() {
+ aCallBackService.noCallBack("No Reply Desired");
+ Assert.assertEquals("CallBackApiITest - test3b", 1, 1);
+ return;
+ }
+
+ /**
+ * This test is the basic callback where the target calls back multiple times to the client
+ */
+
+ private void test3c() {
+ aCallBackService.multiCallBack("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (this.getCallBackCount() < 3 && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackApiITest - test3c", 3, this.getCallBackCount());
+ return;
+ }
+
+ /**
+ * This function returns a string
+ *
+ * @param void
+ * @return String result string
+ */
+
+ public String getReturnMessage() {
+ return returnMessage;
+ }
+
+ /**
+ * This function set the returnMessage string
+ *
+ * @param String
+ */
+ public void setReturnMessage(String aReturnMessage) {
+ returnMessage = aReturnMessage;
+ }
+
+ /**
+ * This function returns the callBackCount variable
+ *
+ * @return Integer callBackCount variable
+ */
+ public int getCallBackCount() {
+ return callBackCount;
+ }
+
+ /**
+ * This function increments callBackCount variable by 1
+ */
+ public void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ /**
+ * This function prints a message synched with setReturnMessage function
+ *
+ * @param String
+ */
+ public void callBackMessage(String aString) {
+ System.out.println("Entering callback callBackMessage: " + aString);
+ synchronized (monitor) {
+ this.setReturnMessage(aString);
+ monitor.notify();
+ }
+ }
+
+ /**
+ * This function prints a message synched with incrementCallBackCount function
+ *
+ * @param String
+ */
+ public void callBackIncrement(String aString) {
+ System.out.println("Entering callback increment: " + aString);
+ synchronized (monitor) {
+ this.incrementCallBackCount();
+ monitor.notify();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.java
new file mode 100644
index 0000000000..33de1e7739
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.java
@@ -0,0 +1,50 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Callback(CallBackApiCallBack.class)
+/**
+ *
+ */
+public interface CallBackApiService {
+ /**
+ * This function is defined in CallBackApiServiceImpl
+ */
+ public void knockKnock(String aString);
+
+ /**
+ * This function is defined in CallBackApiServiceImpl
+ */
+ public void knockKnockByRef(String aString);
+
+ /**
+ * This function is defined in CallBackApiServiceImpl
+ */
+ public void noCallBack(String aString);
+
+ /**
+ * This function is defined in CallBackApiServiceImpl
+ */
+ public void multiCallBack(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.java
new file mode 100644
index 0000000000..61e2c7ee8f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.java
@@ -0,0 +1,123 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackApiService.class)
+public class CallBackApiServiceImpl implements CallBackApiService {
+
+ @Context
+ protected ComponentContext componentContext;
+ /**
+ * Object of CallBackApiCallBack class
+ */
+ private CallBackApiCallBack callback;
+
+ @Callback
+ protected CallableReference callbackRef;
+
+ /**
+ * This function get an object of CallBackApiServiceImpl by calling getCallBackInterface function and calls the
+ * callBackMessage function.
+ *
+ * @param aString String passed by a function call
+ */
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallBackApiServiceImpl message received: " + aString);
+ callback = this.getCallBackInterface();
+ callback.callBackMessage("Who's There");
+ System.out.println("CallBackApiServiceImpl response sent");
+ return;
+
+ }
+
+ /**
+ * This function calls the callBackMessage function.
+ * The reference to this function is received from Call back reference to the class CallBackApiService.
+ *
+ * @param aString String passed by a function call
+ */
+ public void knockKnockByRef(String aString) {
+
+ System.out.println("CallBackApiServiceImpl message received: " + aString);
+ callbackRef.getService().callBackMessage("Who's There");
+ System.out.println("CallBackApiServiceImpl response sent");
+ return;
+
+ }
+
+ /**
+ * This function get an object of CallBackApiServiceImpl by calling getCallBackInterface function.
+ * This function then places multiple callBack using the callbackIncrement function defined in
+ * callBack.ApiServiceImpl
+ *
+ * @param aString String passed by a function call
+ */
+ public void multiCallBack(String aString) {
+
+ callback = this.getCallBackInterface();
+
+ System.out.println("CallBackApiServiceImpl message received: " + aString);
+ callback.callBackIncrement("Who's There 1");
+ System.out.println("CallBackApiServiceImpl response sent");
+ callback.callBackIncrement("Who's There 2");
+ System.out.println("CallBackApiServiceImpl response sent");
+ callback.callBackIncrement("Who's There 3");
+ System.out.println("CallBackApiServiceImpl response sent");
+ return;
+
+ }
+
+ /**
+ * This function does not callBack any function.
+ *
+ * @param aString String passed by a function call
+ */
+ public void noCallBack(String aString) {
+
+ System.out.println("CallBackApiServiceImpl message received: " + aString);
+
+ return;
+
+ }
+
+ /**
+ * This function get an object of CallBackApiServiceImpl from the present componentContext
+ *
+ * @param void
+ */
+ private CallBackApiCallBack getCallBackInterface() {
+ System.out.println("CallBackApiServiceImpl getting request context");
+ RequestContext rc = componentContext.getRequestContext();
+ System.out.println("CallBackApiServiceImpl getting callback from request context");
+ callback = rc.getCallback();
+ System.out.println("CallBackApiServiceImpl returning callback");
+ return callback;
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/CallBackApiTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/CallBackApiTest.composite
new file mode 100644
index 0000000000..946c4862ee
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/CallBackApiTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..19eb25631e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.java
new file mode 100644
index 0000000000..9471049c74
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.java
@@ -0,0 +1,62 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackApiTestCase extends TestCase {
+
+ private static SCADomain domain;
+ private CallBackApiClient aCallBackClient;
+
+ /**
+ * This function uses the Instance of CallBackApiClient.class
+ * This function calls the run function defined in the CallBackApiClinet Interface
+ * which in turn executes the following test cases.
+ * 1. Basic callback patterns
+ * 2. Test in which the target does not call back to the client
+ * 3. Test in which the target calls back multiple times to the client.
+ */
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ /**
+ * This function creates the SCADomain instance and gets an Instance of CallBackApiClient.class
+ */
+ @Override
+ protected void setUp() throws Exception {
+ if (domain == null) {
+ domain = SCADomain.newInstance("CallBackApiTest.composite");
+ }
+
+ aCallBackClient = domain.getService(CallBackApiClient.class, "CallBackApiClient");
+ }
+
+ /**
+ * This function destroys the SCADomain instance that was created in setUp()
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-basic/pom.xml
new file mode 100644
index 0000000000..13a2c16e5c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/pom.xml
@@ -0,0 +1,50 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-basic
+ Apache Tuscany SCA iTest Callback Basic
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+
+ ${basedir}/../build-was-integration.xml
+ ${basedir}/../wasAdmin.py
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicCallBack.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicCallBack.java
new file mode 100644
index 0000000000..5e9d3d6821
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicCallBack.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ *
+ */
+public interface CallBackBasicCallBack {
+
+ public void callBackMessage(String aString);
+
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClient.java
new file mode 100644
index 0000000000..9f4019f28c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClient.java
@@ -0,0 +1,28 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackBasicClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClientImpl.java
new file mode 100644
index 0000000000..e0e6d7eb8c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClientImpl.java
@@ -0,0 +1,135 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackBasicClient.class)
+public class CallBackBasicClientImpl implements CallBackBasicClient, CallBackBasicCallBack {
+
+ @Reference
+ protected CallBackBasicService aCallBackService;
+ private static String returnMessage = null;
+ private static int callBackCount = 0;
+ private static Object monitor = new Object();
+
+ public void run() {
+
+ // This tests basic callback patterns.
+
+ // Test1 is the basic callback where the target calls back prior to
+ // returning to the client.
+ test1a();
+
+ // Test2 is where the target does not call back to the client.
+ test1b();
+
+ // Test3 is where the target calls back multiple times to the client.
+ test1c();
+
+ return;
+ }
+
+ private void test1a() {
+ aCallBackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackBasicITest - test1a", "Who's There", this.getReturnMessage());
+
+ }
+
+ private void test1b() {
+ aCallBackService.noCallBack("No Reply Desired");
+ Assert.assertEquals("CallBackBasicITest - test1b", 1, 1);
+
+ return;
+ }
+
+ private void test1c() {
+ aCallBackService.multiCallBack("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (this.getCallBackCount() < 3 && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackBasicITest - test1c", 3, this.getCallBackCount());
+ return;
+ }
+
+ public String getReturnMessage() {
+ return returnMessage;
+ }
+
+ public void setReturnMessage(String aReturnMessage) {
+ returnMessage = aReturnMessage;
+ }
+
+ public int getCallBackCount() {
+ return callBackCount;
+ }
+
+ public void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public void callBackMessage(String aString) {
+ System.out.println("Entering callback callBackMessage: " + aString);
+ synchronized (monitor) {
+ this.setReturnMessage(aString);
+ monitor.notify();
+ }
+ }
+
+ public void callBackIncrement(String aString) {
+ System.out.println("Entering callback increment: " + aString);
+ synchronized (monitor) {
+ this.incrementCallBackCount();
+ monitor.notify();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicService.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicService.java
new file mode 100644
index 0000000000..bd41fa7037
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicService.java
@@ -0,0 +1,37 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Callback(CallBackBasicCallBack.class)
+/**
+ *
+ */
+public interface CallBackBasicService {
+
+ public void knockKnock(String aString);
+
+ public void noCallBack(String aString);
+
+ public void multiCallBack(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicServiceImpl.java
new file mode 100644
index 0000000000..4ca2dc9af9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicServiceImpl.java
@@ -0,0 +1,59 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackBasicService.class)
+public class CallBackBasicServiceImpl implements CallBackBasicService {
+
+ @Callback
+ protected CallBackBasicCallBack callback;
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallBackBasicServiceImpl message received: " + aString);
+ callback.callBackMessage("Who's There");
+ System.out.println("CallBackBasicServiceImpl response sent");
+ return;
+
+ }
+
+ public void multiCallBack(String aString) {
+
+ System.out.println("CallBackBasicServiceImpl message received: " + aString);
+ callback.callBackIncrement("Who's There 1");
+ System.out.println("CallBackBasicServiceImpl response sent");
+ callback.callBackIncrement("Who's There 2");
+ System.out.println("CallBackBasicServiceImpl response sent");
+ callback.callBackIncrement("Who's There 3");
+ System.out.println("CallBackBasicServiceImpl response sent");
+ return;
+
+ }
+
+ public void noCallBack(String aString) {
+
+ System.out.println("CallBackBasicServiceImpl message received: " + aString);
+ // System.out.println("CallBackBasicServiceImpl No response desired");
+ return;
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/CallBackBasicTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/CallBackBasicTest.composite
new file mode 100644
index 0000000000..c506956088
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/CallBackBasicTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..adf28214f6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.java
new file mode 100644
index 0000000000..32c26a348a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.java
@@ -0,0 +1,50 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackBasicTestCase extends TestCase {
+
+ private static SCADomain domain;
+ private CallBackBasicClient aCallBackClient;
+
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ if( domain==null ) {
+ domain = SCADomain.newInstance("CallBackBasicTest.composite");
+ }
+
+ aCallBackClient = domain.getService(CallBackBasicClient.class, "CallBackBasicClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/pom.xml
new file mode 100644
index 0000000000..90ab9d74a9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-complex-type
+ Apache Tuscany SCA iTest Callback Complex Type
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeCallBack.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeCallBack.java
new file mode 100644
index 0000000000..9fddb850ba
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeCallBack.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ *
+ */
+public interface CallBackCTypeCallBack {
+
+ public void callBackMessage(String aString);
+
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClient.java
new file mode 100644
index 0000000000..739983c277
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClient.java
@@ -0,0 +1,28 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackCTypeClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClientImpl.java
new file mode 100644
index 0000000000..d2b03fcde7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClientImpl.java
@@ -0,0 +1,142 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackCTypeClient.class)
+public class CallBackCTypeClientImpl implements CallBackCTypeClient, CallBackCTypeCallBack {
+
+ @Reference
+ protected CallBackCTypeService aCallBackService;
+ private static String returnMessage = null;
+ private static int callBackCount = 0;
+ private static Object monitor = new Object();
+
+ public CallBackCTypeClientImpl() {
+ }
+
+ public void run() {
+
+ // This test is the same as the Basic Callback except it uses a
+ // componentType side file.
+ // This test currently fails because the integration test environment
+ // does not properly copy
+ // the componentType files to the target folder. This is documented in
+ // Tuscany-967.
+
+ // Test12a is the basic callback where the target calls back prior to
+ // returning to the client.
+ test12a();
+
+ // Test12b is where the target does not call back to the client.
+ test12b();
+
+ // Test12c is where the target calls back multiple times to the client.
+ test12c();
+
+ return;
+ }
+
+ private void test12a() {
+ aCallBackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackBasicITest - test12a -", "Who's There", this.getReturnMessage());
+
+ }
+
+ private void test12b() {
+ aCallBackService.noCallBack("No Reply Desired");
+ Assert.assertEquals("CallBackBasicITest - test12b -", 1, 1);
+ return;
+ }
+
+ private void test12c() {
+ aCallBackService.multiCallBack("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (this.getCallBackCount() < 3 && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackBasicITest - test12c -", 3, this.getCallBackCount());
+ return;
+ }
+
+ public String getReturnMessage() {
+ return returnMessage;
+ }
+
+ public void setReturnMessage(String aReturnMessage) {
+ returnMessage = aReturnMessage;
+ }
+
+ public int getCallBackCount() {
+ return callBackCount;
+ }
+
+ public void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public void callBackMessage(String aString) {
+ System.out.println("Entering callback callBackMessage: " + aString);
+ synchronized (monitor) {
+ this.setReturnMessage(aString);
+ monitor.notify();
+ }
+ }
+
+ public void callBackIncrement(String aString) {
+ System.out.println("Entering callback increment: " + aString);
+ synchronized (monitor) {
+ this.incrementCallBackCount();
+ monitor.notify();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeService.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeService.java
new file mode 100644
index 0000000000..ffbf4f35fa
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeService.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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+// @Callback(CallBackCTypeCallBack.class)
+/**
+ *
+ */
+public interface CallBackCTypeService {
+
+ public void knockKnock(String aString);
+
+ public void noCallBack(String aString);
+
+ public void multiCallBack(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.java
new file mode 100644
index 0000000000..dc31ed156b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.java
@@ -0,0 +1,62 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackCTypeService.class)
+public class CallBackCTypeServiceImpl implements CallBackCTypeService {
+
+ @Callback
+ protected CallBackCTypeCallBack callback;
+
+ public CallBackCTypeServiceImpl() {
+ }
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallBackCTypeServiceImpl message received: " + aString);
+ callback.callBackMessage("Who's There");
+ System.out.println("CallBackCTypeServiceImpl response sent");
+ return;
+
+ }
+
+ public void multiCallBack(String aString) {
+
+ System.out.println("CallBackCTypeServiceImpl message received: " + aString);
+ callback.callBackIncrement("Who's There 1");
+ System.out.println("CallBackCTypeServiceImpl response sent");
+ callback.callBackIncrement("Who's There 2");
+ System.out.println("CallBackCTypeServiceImpl response sent");
+ callback.callBackIncrement("Who's There 3");
+ System.out.println("CallBackCTypeServiceImpl response sent");
+ return;
+
+ }
+
+ public void noCallBack(String aString) {
+
+ System.out.println("CallBackCTypeServiceImpl message received: " + aString);
+ System.out.println("CallBackCTypeServiceImpl No response desired");
+ return;
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite
new file mode 100644
index 0000000000..3f48f16389
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.componentType
new file mode 100644
index 0000000000..ff38134df5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/main/resources/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/test/java/org/apache/tuscany/sca/test/CallBackCTypeTestCaseFIXME.java b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/test/java/org/apache/tuscany/sca/test/CallBackCTypeTestCaseFIXME.java
new file mode 100644
index 0000000000..33d1afaecd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-complex-type/src/test/java/org/apache/tuscany/sca/test/CallBackCTypeTestCaseFIXME.java
@@ -0,0 +1,48 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+//FIXME Fix this test case
+public class CallBackCTypeTestCaseFIXME extends TestCase {
+
+ private SCADomain domain;
+ private CallBackCTypeClient aCallBackClient;
+
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackCTypeClient.composite");
+
+ aCallBackClient =
+ domain.getService(CallBackCTypeClient.class, "CallBackCTypeClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/pom.xml
new file mode 100644
index 0000000000..bef06de1ab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/pom.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-composite-scope
+ Apache Tuscany SCA iTest Callback COMPOSITE Scope
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+
+ ${basedir}/../build-was-integration.xml
+ ${basedir}/../wasAdmin.py
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/Helloworld.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/Helloworld.java
new file mode 100644
index 0000000000..a5320a6492
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/Helloworld.java
@@ -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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+@Callback(HelloworldCallback.class)
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldCallback.java
new file mode 100644
index 0000000000..c37c2f57a2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldCallback.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface HelloworldCallback {
+
+ String whoIs(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegate.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegate.java
new file mode 100644
index 0000000000..0d56e440cd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegate.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface HelloworldDelegate {
+
+ String sayHello(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegateImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegateImpl.java
new file mode 100644
index 0000000000..aa7217eb2a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldDelegateImpl.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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * A HelloworldDelegate implementation. The service method invocation is delegated to a Helloworld service
+ * reference injected into this component.
+ *
+ * @version $Rev$ $Date$
+ */
+@Scope("COMPOSITE")
+@Service(interfaces = {HelloworldDelegate.class, HelloworldCallback.class})
+public class HelloworldDelegateImpl implements HelloworldDelegate, HelloworldCallback {
+
+ @ComponentName
+ protected String componentName;
+
+ @Reference
+ public Helloworld helloworld;
+
+ @Property
+ public String salutation;
+
+ public String sayHello(String name) {
+ System.out.println(componentName+": HelloworldDelegateImpl("+this+").sayHello: " + name);
+ return helloworld.sayHello(name);
+ }
+
+ public String whoIs(String name) {
+ System.out.println(componentName+": HelloworldDelegateImpl("+this+").whoIs: " + name);
+ if(!"world".equalsIgnoreCase(name)) {
+ return salutation;
+ } else {
+ return "";
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldImpl.java
new file mode 100644
index 0000000000..8107bcf42b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/java/org/apache/tuscany/sca/test/HelloworldImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ComponentName;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(Helloworld.class)
+@Scope("COMPOSITE")
+public class HelloworldImpl implements Helloworld {
+
+ @ComponentName
+ protected String componentName;
+
+ @Callback
+ public HelloworldCallback helloworldCallback;
+
+ public String sayHello(String name) {
+ System.out.println(componentName+": HelloworldImpl("+this+").sayHello: " + name);
+ String msg = "Hello " + helloworldCallback.whoIs(name) + " " + name;
+ System.out.println("Msg: "+msg);
+ return msg;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/HelloworldDelegate.composite b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/HelloworldDelegate.composite
new file mode 100644
index 0000000000..1593c1dc23
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/HelloworldDelegate.composite
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Monsieur
+
+
+
+
+
+ Mr.
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..65b9ca501f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/test/java/org/apache/tuscany/sca/test/CallbackTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/test/java/org/apache/tuscany/sca/test/CallbackTestCase.java
new file mode 100644
index 0000000000..bd967099dc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-composite-scope/src/test/java/org/apache/tuscany/sca/test/CallbackTestCase.java
@@ -0,0 +1,66 @@
+/*
+ * 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.test;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class CallbackTestCase {
+
+ private static SCADomain domain;
+ private HelloworldDelegate client;
+ private HelloworldDelegate client2;
+ private HelloworldCallback callback;
+ private HelloworldCallback callback2;
+
+ @Test
+ @Ignore("TUSCANY-2823")
+ public void testCallbacks() {
+ String name = "John";
+ Assert.assertEquals("Hello "+callback.whoIs(name) + " " + name, client.sayHello(name));
+ Assert.assertEquals("Hello "+callback2.whoIs(name) + " " + name, client2.sayHello(name));
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ if( domain == null ) {
+ domain = SCADomain.newInstance("HelloworldDelegate.composite");
+ }
+
+ client = domain.getService(HelloworldDelegate.class, "HelloworldDelegateComponent/HelloworldDelegate");
+ callback = domain.getService(HelloworldCallback.class, "HelloworldDelegateComponent/HelloworldCallback");
+ client2 = domain.getService(HelloworldDelegate.class, "HelloworldDelegateComponent2/HelloworldDelegate");
+ callback2 = domain.getService(HelloworldCallback.class, "HelloworldDelegateComponent2/HelloworldCallback");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ domain.close();
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-id/pom.xml
new file mode 100644
index 0000000000..050bf35f84
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-id
+ Apache Tuscany SCA iTest Callback ID
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdCallBack.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdCallBack.java
new file mode 100644
index 0000000000..b14560a8c3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdCallBack.java
@@ -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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ *
+ */
+public interface CallBackIdCallBack {
+
+ public void callBackMessage(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClient.java
new file mode 100644
index 0000000000..a9e551f8b4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClient.java
@@ -0,0 +1,28 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackIdClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClientImpl.java
new file mode 100644
index 0000000000..59c9c3d069
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClientImpl.java
@@ -0,0 +1,147 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackIdClient.class)
+public class CallBackIdClientImpl implements CallBackIdClient, CallBackIdCallBack {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ServiceReference aCallBackService;
+
+ private static String returnMessage = null;
+ private static Object monitor = new Object();
+ private static Object callBackId;
+
+ public void run() {
+
+ // This tests the use of the set/get callbackId API both SCA generated
+ // and client specified.
+
+ // Test1 uses a SCA generated callback ID and compare that with the
+ // callbackID returned during callback.
+ test11a();
+
+ // Test2 uses a Client specified callback ID and compare that with the
+ // callbackID returned during callback.
+ test11b();
+
+ return;
+ }
+
+ private void test11a() {
+
+ // Retrieve this services callback ID and save it. Once the callback is
+ // received the callback ID will be compared with the one
+ // returned. Equal is good.
+
+ Object origCallBackId = aCallBackService.getCallbackID();
+ aCallBackService.getService().knockKnock("Knock Knock - Test1");
+ int count = 0;
+
+ //
+ // If we cannot get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert.assertEquals("CallBackIdITest - test11a - SCA Generated Id", origCallBackId, this.getCallBackId());
+
+ }
+
+ private void test11b() {
+
+ // Set the services callback ID and save it. Once the callback is
+ // received the callback ID will be compared with the one
+ // returned. Equal is good.
+
+ String origCallBackId = "CallBackId1";
+ aCallBackService.setCallbackID(origCallBackId);
+
+ aCallBackService.getService().knockKnock("Knock Knock - Test2");
+ int count = 0;
+
+ //
+ // If we can't get a response in 30 seconds consider this a failure
+ //
+
+ synchronized (monitor) {
+ while (returnMessage == null && count++ < 30) {
+ try {
+ monitor.wait(1000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ Assert
+ .assertEquals("CallBackIdITest - 11b - Client Specified Id", origCallBackId, (String)this.getCallBackId());
+
+ }
+
+ public String getReturnMessage() {
+ return returnMessage;
+ }
+
+ public void setReturnMessage(String aReturnMessage) {
+ returnMessage = aReturnMessage;
+ }
+
+ public void callBackMessage(String aString) {
+
+ System.out.println("Entering callback callBackMessage: " + aString);
+ RequestContext rc = componentContext.getRequestContext();
+ Object callBackId = rc.getServiceReference().getCallbackID();
+
+ synchronized (monitor) {
+ this.setReturnMessage(aString);
+ this.setCallBackId(callBackId);
+ monitor.notify();
+ }
+ }
+
+ protected Object getCallBackId() {
+ return callBackId;
+ }
+
+ protected void setCallBackId(Object aCallBackId) {
+ callBackId = aCallBackId;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdService.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdService.java
new file mode 100644
index 0000000000..18c592a1c1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdService.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Callback(CallBackIdCallBack.class)
+/**
+ *
+ */
+public interface CallBackIdService {
+
+ public void knockKnock(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdServiceImpl.java
new file mode 100644
index 0000000000..8b0a4b69cf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdServiceImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackIdService.class)
+public class CallBackIdServiceImpl implements CallBackIdService {
+
+ @Callback
+ protected CallBackIdCallBack callback;
+ @Context
+ protected ComponentContext compositeContext;
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallBackIdServiceImpl message received: " + aString);
+ RequestContext rc = compositeContext.getRequestContext();
+ Object callBackId = rc.getServiceReference().getCallbackID();
+ System.out.println("CallBackIdServiceImpl callbackID: " + callBackId);
+
+ callback.callBackMessage("Who's There");
+ System.out.println("CallBackIdServiceImpl response sent");
+ return;
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/resources/CallBackIdClient.composite b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/resources/CallBackIdClient.composite
new file mode 100644
index 0000000000..c9a6ba6258
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/main/resources/CallBackIdClient.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-id/src/test/java/org/apache/tuscany/sca/test/CallBackIdTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/test/java/org/apache/tuscany/sca/test/CallBackIdTestCase.java
new file mode 100644
index 0000000000..771fbb8ff7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-id/src/test/java/org/apache/tuscany/sca/test/CallBackIdTestCase.java
@@ -0,0 +1,45 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackIdTestCase extends TestCase {
+
+ private SCADomain domain;
+ private CallBackIdClient aCallBackClient;
+
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackIdClient.composite");
+
+ aCallBackClient = domain.getService(CallBackIdClient.class, "CallBackIdClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/pom.xml
new file mode 100644
index 0000000000..b2ad4a3c39
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-multiple-wires
+ Apache Tuscany SCA iTest Callback With Mutiple Wires
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClient.java
new file mode 100644
index 0000000000..7c80d222fc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClient.java
@@ -0,0 +1,27 @@
+/*
+ * 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.test.callback;
+
+/**
+ * The client interface
+ */
+public interface MyClient {
+
+ void aClientMethod();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl1.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl1.java
new file mode 100644
index 0000000000..df91f3d268
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl1.java
@@ -0,0 +1,49 @@
+/*
+ * 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.test.callback;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Demonstrates a component-to-component callback invocation
+ */
+@Service(MyClient.class)
+@Scope("COMPOSITE")
+public class MyClientImpl1 implements MyClient, MyServiceCallback {
+
+ private MyService myService;
+ static String result;
+
+ @Reference
+ public void setMyService(MyService myService) {
+ this.myService = myService;
+ }
+
+ public void aClientMethod() {
+ myService.someMethod("-> someMethod1");
+ }
+
+ public void receiveResult(String result) {
+ System.out.println("Work thread " + Thread.currentThread());
+ System.out.println("Result: " + result);
+ MyClientImpl1.result = result;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl2.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl2.java
new file mode 100644
index 0000000000..a0a9564002
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl2.java
@@ -0,0 +1,49 @@
+/*
+ * 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.test.callback;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Demonstrates a component-to-component callback invocation
+ */
+@Service(MyClient.class)
+@Scope("COMPOSITE")
+public class MyClientImpl2 implements MyClient, MyServiceCallback {
+
+ private MyService myService;
+ static String result;
+
+ @Reference
+ public void setMyService(MyService myService) {
+ this.myService = myService;
+ }
+
+ public void aClientMethod() {
+ myService.someMethod("-> someMethod2");
+ }
+
+ public void receiveResult(String result) {
+ System.out.println("Work thread " + Thread.currentThread());
+ System.out.println("Result: " + result);
+ MyClientImpl2.result = result;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyService.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyService.java
new file mode 100644
index 0000000000..cfd601f546
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyService.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test.callback;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.OneWay;
+
+/**
+ * This service that will be invoked in a non-blocking fashion
+ */
+@Callback(MyServiceCallback.class)
+public interface MyService {
+
+ @OneWay
+ void someMethod(String arg);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceCallback.java
new file mode 100644
index 0000000000..f198efae51
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceCallback.java
@@ -0,0 +1,27 @@
+/*
+ * 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.test.callback;
+
+/**
+ * The callback interface for {@link MyService}.
+ */
+public interface MyServiceCallback {
+
+ void receiveResult(String result);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.java
new file mode 100644
index 0000000000..d19b3fe355
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.java
@@ -0,0 +1,45 @@
+/*
+ * 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.test.callback;
+
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements MyService and uses a callback.
+ */
+@Service(MyService.class)
+@Scope("COMPOSITE")
+public class MyServiceImpl implements MyService {
+
+ @Context
+ protected RequestContext requestContext;
+
+ public void someMethod(String arg) {
+ // invoke the callback
+ try {
+ MyServiceCallback myServiceCallback = requestContext.getCallback();
+ myServiceCallback.receiveResult(arg + " -> receiveResult");
+ } catch(RuntimeException e) {
+ System.out.println("RuntimeException invoking receiveResult: " + e.toString());
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite
new file mode 100644
index 0000000000..3dae3ca3a8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/test/java/org/apache/tuscany/sca/test/callback/CallbackMultiWireTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/test/java/org/apache/tuscany/sca/test/callback/CallbackMultiWireTestCase.java
new file mode 100644
index 0000000000..3c83e4bedd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-multiple-wires/src/test/java/org/apache/tuscany/sca/test/callback/CallbackMultiWireTestCase.java
@@ -0,0 +1,55 @@
+/*
+ * 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.test.callback;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * A TestCase that demonstrates resolving the client service and initiating the callback sequence
+ */
+public class CallbackMultiWireTestCase extends TestCase {
+
+ private SCADomain scaDomain;
+ private MyClient myClient1;
+ private MyClient myClient2;
+
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("CallbackMultiWireTest.composite");
+ myClient1 = scaDomain.getService(MyClient.class, "MyClientComponent1");
+ myClient2 = scaDomain.getService(MyClient.class, "MyClientComponent2");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ public void test() throws Exception {
+ System.out.println("Main thread " + Thread.currentThread());
+ myClient1.aClientMethod();
+ myClient2.aClientMethod();
+ System.out.println("Sleeping ...");
+ Thread.sleep(300);
+ assertEquals("-> someMethod1 -> receiveResult", MyClientImpl1.result);
+ assertEquals("-> someMethod2 -> receiveResult", MyClientImpl2.result);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/pom.xml
new file mode 100644
index 0000000000..9635fe1dd4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-separatethread
+ Apache Tuscany SCA iTest Callback Using Separate Thread
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClient.java
new file mode 100644
index 0000000000..f812a39058
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClient.java
@@ -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 org.apache.tuscany.sca.itest;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the client interface for the call backs in a separate thread tests
+ */
+@Remotable
+public interface CallBackSeparateThreadClient {
+
+ /**
+ * This tests call back patterns using separate threads.
+ */
+ void runTests();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClientImpl.java
new file mode 100644
index 0000000000..e861f8a3d1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadClientImpl.java
@@ -0,0 +1,172 @@
+/*
+ * 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.itest;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This is the client implementation for the call backs in a separate thread tests
+ */
+@Service(CallBackSeparateThreadClient.class)
+public class CallBackSeparateThreadClientImpl implements CallBackSeparateThreadClient, EventProcessorCallBack {
+ /**
+ * Used to sleep for 60 seconds.
+ */
+ private static final int SIXTY_SECONDS = 60 * 1000;
+
+ /**
+ * Counts the number of one second call backs
+ */
+ private static final AtomicInteger oneSecondCallbackCount = new AtomicInteger();
+
+ /**
+ * Counts the number of five second call backs
+ */
+ private static final AtomicInteger fiveSecondCallbackCount = new AtomicInteger();
+
+ /**
+ * This is our injected reference to the EventProcessorService
+ */
+ @Reference
+ protected EventProcessorService aCallBackService;
+
+ /**
+ * This tests call back patterns using separate threads.
+ */
+ public void runTests() {
+ // Register for 1 second call back
+ registerFor1SecondCallback();
+
+ // Wait for a few 1 second call backs
+ System.out.println("Waiting for some 1 second calls");
+ waitForSome1SecondCallbacks();
+
+ // Register for 5 second call back
+ registerFor5SecondCallback();
+
+ // Wait for a few 1 second call backs
+ System.out.println("Waiting for some 1 second calls");
+ waitForSome1SecondCallbacks();
+
+ // Wait for a few 5 second call backs
+ System.out.println("Waiting for some 5 second calls");
+ waitForSome5SecondCallbacks();
+
+ System.out.println("Done");
+ }
+
+ /**
+ * Waits for some one second call backs to be fired
+ */
+ private void waitForSome1SecondCallbacks() {
+ // Reset the one second call back count
+ oneSecondCallbackCount.set(0);
+
+ // Wait until we have 10 1 second call backs or 60 seconds has passed
+ final long start = System.currentTimeMillis();
+ do {
+ if (oneSecondCallbackCount.get() >= 10) {
+ System.out.println("Received enough 1 second notifications");
+ return;
+ }
+
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ Assert.fail("Unexpeceted exception " + e);
+ }
+ }
+ while (System.currentTimeMillis() - start < SIXTY_SECONDS);
+
+ // If we get to here then we did not receive enough events
+ Assert.fail("Did not receive enough 1 second events");
+ }
+
+ /**
+ * Waits for some five second call backs to be fired
+ */
+ private void waitForSome5SecondCallbacks() {
+ // Reset the five second call back count
+ fiveSecondCallbackCount.set(0);
+
+ // Wait until we have 4 5 second call backs or 60 seconds has passed
+ final long start = System.currentTimeMillis();
+ do
+ {
+ if (fiveSecondCallbackCount.get() >= 4) {
+ System.out.println("Received enough 5 second notifications");
+ return;
+ }
+
+ try
+ {
+ Thread.sleep(500);
+ }
+ catch (InterruptedException e)
+ {
+ Assert.fail("Unexpeceted exception " + e);
+ }
+ }
+ while (System.currentTimeMillis() - start < SIXTY_SECONDS);
+
+ // If we get to here then we did not receive enough events
+ Assert.fail("Did not receive enough 5 second events");
+ }
+
+ /**
+ * Register to receive one second call backs
+ */
+ private void registerFor1SecondCallback() {
+ aCallBackService.registerForEvent("ONE");
+ return;
+ }
+
+ /**
+ * Register to receive five second call backs
+ */
+ private void registerFor5SecondCallback() {
+ aCallBackService.registerForEvent("FIVE");
+ }
+
+ /**
+ * Method that is called when an Event is delivered.
+ *
+ * @param aEventName The name of the Event
+ * @param aEventData The Event data
+ */
+ public void eventNotification(String aEventName, Object aEventData) {
+ // System.out.println("Received Event : " + aEventName + " " + aEventData);
+
+ if (aEventName.equals("ONE")) {
+ final int newValue = oneSecondCallbackCount.incrementAndGet();
+ //System.out.println("Received total of " + newValue + " 1 second call backs");
+ } else if (aEventName.equals("FIVE")) {
+ final int newValue = fiveSecondCallbackCount.incrementAndGet();
+ //System.out.println("Received total of " + newValue + " 5 second call backs");
+ }
+ else
+ System.out.println("Unknown event type of " + aEventName);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorCallBack.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorCallBack.java
new file mode 100644
index 0000000000..ae41f596fc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorCallBack.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.itest;
+
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The call back interface for the EventProcessorService that is implemented
+ * by the client to receive event notifications
+ */
+@Remotable
+public interface EventProcessorCallBack {
+ /**
+ * Call back notifying client of an Event
+ *
+ * @param aEventName The name of the Event
+ * @param aEventData The data for the Event
+ */
+ void eventNotification(String aEventName, Object aEventData);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorService.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorService.java
new file mode 100644
index 0000000000..c22b8cceec
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorService.java
@@ -0,0 +1,48 @@
+/*
+ * 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.itest;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * Sample Event Processor Service
+ */
+@Conversational
+@Callback(EventProcessorCallBack.class)
+@Remotable
+public interface EventProcessorService {
+
+ /**
+ * Registers the client to receive notifications for the specified event
+ *
+ * @param aEventName The name of the Event to register
+ */
+ void registerForEvent(String aEventName);
+
+ /**
+ * Unregisters the client so it no longer receives notifications for the specified event
+ *
+ * @param aEventName The name of the Event to unregister
+ */
+ void unregisterForEvent(String aEventName);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorServiceImpl.java
new file mode 100644
index 0000000000..4d672b3a8b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/java/org/apache/tuscany/sca/itest/EventProcessorServiceImpl.java
@@ -0,0 +1,197 @@
+/*
+ * 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.itest;
+
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Sample Event Processor Service Implementation
+ */
+@Service(EventProcessorService.class)
+@Scope("CONVERSATION")
+public class EventProcessorServiceImpl implements EventProcessorService {
+
+ /**
+ * Reference to the call back
+ */
+ @Callback
+ protected CallableReference clientCallback;
+
+ /**
+ * This map contains the call backs for each of the registered Event names
+ */
+ private final Map> eventListeners;
+
+ /**
+ * The list of all Event Generators we create
+ */
+ private final EventGenerator[] allEventGenerators;
+
+ /**
+ * Constructor. Starts the Event Generators
+ */
+ public EventProcessorServiceImpl() {
+ eventListeners = new ConcurrentHashMap>();
+
+ // We will simulate an Event generator
+ allEventGenerators = new EventGenerator[2];
+ allEventGenerators[0] = new EventGenerator("ONE", 1); // Generate the SECOND event every second
+ allEventGenerators[1] = new EventGenerator("FIVE", 5); // Generate the FIVE event every 5 seconds
+ }
+
+ /**
+ * Registers the client to receive notifications for the specified event
+ *
+ * @param aEventName The name of the Event to register
+ */
+ public void registerForEvent(String aEventName)
+ {
+ // Register for the Event
+ eventListeners.put(aEventName, clientCallback);
+
+ // Send the "register" started event to the client
+ receiveEvent(aEventName, "SameThread: Registered to receive notifications for " + aEventName);
+ }
+
+ /**
+ * Unregisters the client so it no longer receives notifications for the specified event
+ *
+ * @param aEventName The name of the Event to unregister
+ */
+ public void unregisterForEvent(String aEventName)
+ {
+ // Send the "register" started event to the client
+ receiveEvent(aEventName, "SameThread: Unregister from receiving notifications for " + aEventName);
+
+ eventListeners.remove(aEventName);
+ }
+
+ /**
+ * This method is called whenever the EventProcessorService receives an Event
+ *
+ * @param aEventName The name of the Event received
+ * @param aEventData The Event data
+ */
+ private void receiveEvent(String aEventName, Object aEventData)
+ {
+ // Get the listener for the Event
+ final CallableReference callback = eventListeners.get(aEventName);
+ if (callback == null)
+ {
+ //System.out.println("No registered listeners for " + aEventName);
+ return;
+ }
+
+ // Trigger the call back
+ // System.out.println("Notifying " + callback + " of event " + aEventName);
+ callback.getService().eventNotification(aEventName, aEventData);
+ // System.out.println("Done notify " + callback + " of event " + aEventName);
+ }
+
+ /**
+ * Shuts down the Event Processor
+ */
+ @Destroy
+ public void shutdown()
+ {
+ System.out.println("Shutting down the EventProcessor");
+
+ // Clear list of call back locations as we don't want to send any more notifications
+ eventListeners.clear();
+
+ // Stop the Event Generators
+ for (EventGenerator generator : allEventGenerators)
+ {
+ generator.stop();
+ }
+ }
+
+ /**
+ * Utility class for generating Events
+ */
+ private class EventGenerator
+ {
+ /**
+ * The Timer we are using to generate the events
+ */
+ private final Timer timer = new Timer();
+
+ /**
+ * Constructor
+ *
+ * @param aEventName The name of the Event to generate
+ * @param frequencyInSeconds How frequently we should generate the Events
+ */
+ private EventGenerator(String aEventName, int frequencyInSeconds)
+ {
+ timer.schedule(new EventGeneratorTimerTask(aEventName),
+ frequencyInSeconds * 1000, frequencyInSeconds * 1000);
+ }
+
+ /**
+ * Stop this Event Generator
+ */
+ private void stop()
+ {
+ timer.cancel();
+ }
+
+ /**
+ * The TimerTask that is invoked by the Timer for the EventGenerator
+ */
+ private class EventGeneratorTimerTask extends TimerTask
+ {
+ /**
+ * The name of the Event we should generate
+ */
+ private final String eventName;
+
+ /**
+ * Constructor
+ *
+ * @param aEventName The name of the Event we should generate
+ */
+ private EventGeneratorTimerTask(String aEventName)
+ {
+ eventName = aEventName;
+ }
+
+ /**
+ * Timer calls this method and it will generate an Event
+ */
+ @Override
+ public void run()
+ {
+ // System.out.println("Generating new event " + eventName);
+ receiveEvent(eventName, "Separate Thread Notification: " + UUID.randomUUID().toString());
+ }
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/resources/CallBackSeparateThreadTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/resources/CallBackSeparateThreadTest.composite
new file mode 100644
index 0000000000..e111e5074c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/main/resources/CallBackSeparateThreadTest.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/test/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/test/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadTestCase.java
new file mode 100644
index 0000000000..f7e7be2133
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-separatethread/src/test/java/org/apache/tuscany/sca/itest/CallBackSeparateThreadTestCase.java
@@ -0,0 +1,64 @@
+/*
+ * 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.itest;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This test case will attempt to trigger a call back using a separate thread
+ */
+public class CallBackSeparateThreadTestCase extends TestCase {
+
+ /**
+ * The SCADomain we are using
+ */
+ private SCADomain domain;
+
+ /**
+ * The client the tests should use
+ */
+ private CallBackSeparateThreadClient aCallBackClient;
+
+ /**
+ * Run the call back in separate thread tests
+ */
+ public void testCallBackSeparateThread() {
+ aCallBackClient.runTests();
+ }
+
+ /**
+ * Load the Call back in separate thread composite and look up the client.
+ */
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackSeparateThreadTest.composite");
+ aCallBackClient = domain.getService(CallBackSeparateThreadClient.class, "CallBackSeparateThreadClient");
+ }
+
+ /**
+ * Shutdown the SCA domain
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/pom.xml
new file mode 100644
index 0000000000..ca7b5f2ca7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-set-callback
+ Apache Tuscany SCA iTest Set Callback
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCalbackService.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCalbackService.java
new file mode 100644
index 0000000000..3b9599f53f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCalbackService.java
@@ -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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Callback;
+
+// @Remotable
+@Callback(CallBackSetCallbackCallback.class)
+/**
+ *
+ */
+public interface CallBackSetCalbackService {
+
+ public void knockKnock(String aString);
+
+ public boolean setCallbackIllegally(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackBadCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackBadCallback.java
new file mode 100644
index 0000000000..48752f2ea1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackBadCallback.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.test;
+
+import junit.framework.Assert;
+
+public class CallBackSetCallbackBadCallback {
+
+ public CallBackSetCallbackBadCallback() {
+ super();
+ }
+
+ public void callback(String aString) {
+ //
+ // This callback method should never be called.
+ //
+ System.out.println("CallBackSetCallbackBadCallback: callback called");
+ Assert.fail("CallBackSetCallbackBadCallback: callback called");
+ return;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallback.java
new file mode 100644
index 0000000000..ad0e0603a3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallback.java
@@ -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 org.apache.tuscany.sca.test;
+
+// @Remotable
+/**
+ *
+ */
+public interface CallBackSetCallbackCallback {
+
+ public void callBackMessage(String aString);
+
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallbackImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallbackImpl.java
new file mode 100644
index 0000000000..0a22b0e01f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallbackImpl.java
@@ -0,0 +1,66 @@
+/*
+ * 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.test;
+
+import java.io.File;
+
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackSetCallbackCallback.class)
+public class CallBackSetCallbackCallbackImpl implements CallBackSetCallbackCallback {
+
+ private static String returnMessage = null;
+ private static int callBackCount = 0;
+
+ public String getReturnMessage() {
+ return returnMessage;
+ }
+
+ public void setReturnMessage(String aReturnMessage) {
+ returnMessage = aReturnMessage;
+ }
+
+ public int getCallBackCount() {
+ return callBackCount;
+ }
+
+ public void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public void callBackMessage(String aString) {
+
+ System.out.println("Entering CallBackSetCallbackCallbackImpl callBackMessage: " + aString);
+
+ File aFile = new File("target/test4_marker");
+ try {
+ aFile.createNewFile();
+ } catch (Exception ex) {
+ System.out.println("Error Creating target/test4_marker marker file");
+ ex.printStackTrace();
+ }
+
+ }
+
+ public void callBackIncrement(String aString) {
+ System.out.println("Entering callback increment: " + aString);
+ this.incrementCallBackCount();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClient.java
new file mode 100644
index 0000000000..94cb6aa73b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClient.java
@@ -0,0 +1,28 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackSetCallbackClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
new file mode 100644
index 0000000000..66e4d3fc05
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
@@ -0,0 +1,190 @@
+/*
+ * 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.test;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.NoRegisteredCallbackException;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackSetCallbackClient.class)
+public class CallBackSetCallbackClientImpl implements CallBackSetCallbackClient {
+
+ @Reference
+ protected ServiceReference aCallBackService;
+ @Reference
+ protected ServiceReference callBack;
+
+ public void run() {
+
+ // This test various aspects of the setCallback() API in a stateless
+ // scope.
+
+ /*
+ * test4 Client does not implement the callback interface but calls
+ * setCallback with a service reference before invoking the target,
+ * Verify successful execution.
+ */
+
+ test4();
+
+ /*
+ * test5 The client does not implement the callback interface and does
+ * not call setCallback() before invoking the target. Verify a
+ * NoRegisteredCallbackException is thrown.
+ */
+
+ test5();
+
+ /*
+ * test6() The client calls setCallback() with an object that is not a
+ * service reference and the callback interface is stateless. Verify
+ * that an appropriate exception is thrown. When calling setCallback
+ * with an object the interface must be stateful. Stateless interfaces
+ * require a service Reference.
+ */
+
+ test6();
+
+ /*
+ * test10 The target calls setCallback() on its own service reference,
+ * e.g. getRequestContext().getServiceReference().getCallback(). Verify
+ * an appropriate exception occurs.
+ */
+
+ test10();
+
+ return;
+ }
+
+ private void test4() {
+
+ //
+ // Since callbacks do not synchronously return and this test results in
+ // a callback to a component other
+ // than this client I am using a marker file to determine the outcome.
+ // The presence of the marker
+ // file will be used for the Assertion test. If it exists then the
+ // callback occurred and all is good.
+ //
+
+ // Make sure the marker file is not present before starting the test.
+ File aFile = new File("target/test4_marker");
+ if (aFile.exists())
+ aFile.delete();
+
+ aCallBackService.setCallback(callBack);
+
+ aCallBackService.getService().knockKnock("Knock Knock");
+
+ // Lets give the callback a little time to complete....
+
+ int count = 0;
+ long timeout = 1000;
+
+ while (count++ < 30 && (aFile.exists() == false)) {
+ try {
+ Thread.sleep(timeout);
+ } catch (InterruptedException ie) {
+ }
+ }
+
+ Assert.assertEquals("CallBackSetCallback - Test4", true, aFile.exists());
+
+ aCallBackService.setCallback(null); // leave this in the default state for next test
+
+ }
+
+ private void test5() {
+
+ boolean correctException = false;
+
+ //
+ // The backend service is expecting a callback reference to be set. This
+ // test will not
+ // set one so an exception is expected. According to the spec if a
+ // client calls a method on
+ // a service reference prior to calling setCallback() then a
+ // NoRegisteredCallbackException
+ // will be thrown on the client.
+ //
+
+ try {
+ aCallBackService.getService().knockKnock("Knock Knock");
+ } catch (NoRegisteredCallbackException NotRegEx) {
+ correctException = true;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ Assert.assertEquals("CallBackSetCallback - Test5", true, correctException);
+
+ }
+
+ private void test6() {
+
+ boolean correctException = false;
+
+ //
+ // This test is to specify an Object that is not a service reference
+ // that does implement
+ // the callback interface. However because this callback service is
+ // stateless the expected
+ // result is an appropriate exception.
+ //
+
+ try {
+ aCallBackService.setCallback(new CallBackSetCallbackObjectCallback());
+ aCallBackService.getService().knockKnock("Knock Knock");
+ }
+ //
+ // This should catch an appropriate exception.
+ //
+ catch (IllegalArgumentException goodEx) {
+ correctException = true;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ Assert.assertEquals("CallBackSetCallback - Test6", true, correctException);
+
+ }
+
+ private void test10() {
+
+ //
+ // The appropriate exception should be thrown and caught on the service side.
+ // If this happens, the setCallbackIllegally() method will return true.
+ // If not, this method will return false.
+ //
+
+ aCallBackService.setCallback(callBack); // ensure no client-side exception
+
+ boolean result = aCallBackService.getService().setCallbackIllegally
+ ("Try to set callback on your own service reference");
+
+ Assert.assertEquals("CallBackSetCallback - Test10", true, result);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackObjectCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackObjectCallback.java
new file mode 100644
index 0000000000..afedcdf7f1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackObjectCallback.java
@@ -0,0 +1,44 @@
+/*
+ * 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.test;
+
+public class CallBackSetCallbackObjectCallback implements CallBackSetCallbackCallback {
+
+ private int callBackCount = 0;
+
+ public CallBackSetCallbackObjectCallback() {
+ super();
+ }
+
+ public void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public void callBackMessage(String aString) {
+
+ System.out.println("Entering CallBackSetCallbackObjectCallback callBackMessage: " + aString);
+
+ }
+
+ public void callBackIncrement(String aString) {
+ System.out.println("Entering callback increment: " + aString);
+ this.incrementCallBackCount();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.java
new file mode 100644
index 0000000000..4a6c9dbaa6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.java
@@ -0,0 +1,73 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackSetCalbackService.class)
+public class CallBackSetCallbackServiceImpl implements CallBackSetCalbackService {
+
+ @Callback
+ protected CallBackSetCallbackCallback callback;
+ @Context
+ protected ComponentContext context;
+
+ public void knockKnock(String aString) {
+
+ try {
+ System.out.println("CallBackBasicServiceImpl message received: " + aString);
+ callback.callBackMessage("Who's There");
+ System.out.println("CallBackBasicServiceImpl response sent");
+ return;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ public boolean setCallbackIllegally(String aString) {
+
+ System.out.println("CallBackBasicServiceImpl.setCallbackIllegally() message received: " + aString);
+
+ boolean exceptionProduced = false;
+ RequestContext requestContext = null;
+ ServiceReference serviceRef = null;
+
+ try {
+ requestContext = context.getRequestContext();
+ serviceRef = (ServiceReference) requestContext.getServiceReference();
+ serviceRef.setCallback(serviceRef);
+ } catch (ClassCastException goodEx) {
+ exceptionProduced = true;
+ System.out.println("Test10 appropriate exception caught during setCallback to own service reference");
+ } catch (Exception badEx) {
+ System.out.println("CallBackBasicServiceImpl.setCallbackIllegally() " + badEx.toString());
+ badEx.printStackTrace();
+ }
+
+ // Return a flag indicating whether we got the exception we are looking for
+ return exceptionProduced;
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite
new file mode 100644
index 0000000000..3552ddecab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackTestCase.java
new file mode 100644
index 0000000000..496ae0b1a5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-callback/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackTestCase.java
@@ -0,0 +1,49 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+//FIXME Fix this test case
+public class CallBackSetCallbackTestCase extends TestCase {
+
+ private SCADomain domain;
+ private CallBackSetCallbackClient aCallBackClient;
+
+ public void testCallBackSetCallback() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackSetCallbackTest.composite");
+
+ aCallBackClient =
+ domain.getService(CallBackSetCallbackClient.class,
+ "CallBackSetCallbackClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/pom.xml b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/pom.xml
new file mode 100644
index 0000000000..335cd6feab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-callback-set-conversation
+ Apache Tuscany SCA iTest Callback Set Conversation
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.java
new file mode 100644
index 0000000000..d97c69eaed
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.java
@@ -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.
+ */
+package org.apache.tuscany.sca.test;
+
+import java.io.Serializable;
+
+import junit.framework.Assert;
+
+public class CallBackSetCallbackConvBadCallback implements Serializable {
+
+ public CallBackSetCallbackConvBadCallback() {
+ super();
+ }
+
+ public void callback(String aString) {
+ //
+ // This callback method should never be called.
+ //
+ System.out.println("CallBackSetCallbackBadCallback: callback called");
+ Assert.fail("CallBackSetCallbackConvBadCallback: callback called");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvCallback.java
new file mode 100644
index 0000000000..a704fd0ece
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvCallback.java
@@ -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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Conversational;
+
+// @Remotable
+@Conversational
+/**
+ *
+ */
+public interface CallBackSetCallbackConvCallback {
+
+ public void callBackMessage(String aString);
+
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClient.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClient.java
new file mode 100644
index 0000000000..013424bf5e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClient.java
@@ -0,0 +1,28 @@
+/*
+ * 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.test;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CallBackSetCallbackConvClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java
new file mode 100644
index 0000000000..5d692e7728
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java
@@ -0,0 +1,163 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackSetCallbackConvClient.class)
+@Scope("CONVERSATION")
+public class CallBackSetCallbackConvClientImpl implements CallBackSetCallbackConvClient {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected CallBackSetCallbackConvService aCallBackService;
+
+ private CallBackSetCallbackConvObjectCallback aCallbackObject = null;
+
+ public void run() {
+
+ // This tests aspects of the setCallback() API within a conversational
+ // scope.
+
+ /*
+ * test7 The client calls setCallback() with an object that is not a
+ * service reference and the callback interface is stateful. Verify
+ * successful execution.
+ */
+ test7();
+
+ /*
+ * test8() The client calls setCallback() with an object that does not
+ * implement the callback interface. Verify an appropriate exception is
+ * thrown. This requires a STATEFUL interface.
+ */
+ test8();
+
+ /*
+ * test9 The client calls setCallback() with an object that is not
+ * Serializable. Verify an appropriate exception is thrown. This
+ * requires a STATEFUL callback interface. Move from the stateless test
+ * case.
+ */
+ test9();
+
+ return;
+ }
+
+ private void test7() {
+
+ //
+ // This test is to specify an Object that is not a service reference
+ // that does implement
+ // the callback interface and is Serializable. Verify successful
+ // execution.
+ //
+
+ aCallbackObject = new CallBackSetCallbackConvObjectCallback();
+ aCallbackObject.incrementCallBackCount();
+
+ ServiceReference aCallBackServiceRef
+ = componentContext.cast(aCallBackService);
+ aCallBackServiceRef.setCallback(aCallbackObject);
+ aCallBackService.knockKnock("Knock Knock 7");
+
+ Assert.assertEquals("CallBackSetCallbackConv - Test7", 2, aCallbackObject.getCount());
+
+ }
+
+ private void test8() {
+
+ boolean correctException = false;
+
+ //
+ // This test is to specify an Object that is not a service reference
+ // that does not implement
+ // the callback interface. The expected result is an appropriate
+ // exception.
+ //
+
+ try {
+ ServiceReference aCallBackServiceRef
+ = componentContext.cast(aCallBackService);
+ aCallBackServiceRef.setCallback(new CallBackSetCallbackConvBadCallback());
+ aCallBackService.knockKnock("Knock Knock 8");
+ }
+
+ //
+ // This should catch an appropriate exception.
+ //
+
+ catch (IllegalArgumentException goodEx)
+ {
+ System.out.println("correct exception " + goodEx);
+ correctException = true;
+ }
+
+ catch (Exception ex) {
+ // This means an inappropriate exception occurred
+ ex.printStackTrace();
+ }
+
+ Assert.assertEquals("CallBackSetCallbackConv - Test8", true, correctException);
+
+ }
+
+ private void test9() {
+
+ boolean correctException = false;
+
+ //
+ // This test is to specify an Object that is not a service reference
+ // that does implement
+ // the callback interface but does not implement Serializable. Verify
+ // an appropriate exception
+ // is thrown.
+ //
+
+ try {
+ ServiceReference aCallBackServiceRef
+ = componentContext.cast(aCallBackService);
+ aCallBackServiceRef.setCallback(new CallBackSetCallbackConvNonSerCallback());
+ aCallBackService.knockKnock("Knock Knock 9");
+ }
+ //
+ // This should catch an appropriate exception.
+ //
+ catch (IllegalArgumentException goodEx)
+ {
+ System.out.println("correct exception " + goodEx);
+ correctException = true;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ Assert.assertEquals("CallBackSetCallbackConv - Test9", true, correctException);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.java
new file mode 100644
index 0000000000..75a4a3a6a0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.java
@@ -0,0 +1,56 @@
+/*
+ * 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.test;
+
+import junit.framework.Assert;
+
+public class CallBackSetCallbackConvNonSerCallback implements CallBackSetCallbackConvCallback {
+
+ private int callBackCount = 0;
+
+ public CallBackSetCallbackConvNonSerCallback() {
+ super();
+ }
+
+ public synchronized void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public synchronized int getCount() {
+ return callBackCount;
+ }
+
+ public void callBackMessage(String aString) {
+ //
+ // This callback method should never be called.
+ //
+ System.out.println("Entering CallBackSetCallbackConvNonSerCallback callBackMessage: " + aString);
+ Assert.fail("CallBackSetCallbackConvNonSerCallback: callbackMessage called");
+ }
+
+ public void callBackIncrement(String aString) {
+ //
+ // This callback method should never be called.
+ //
+ System.out.println("Entering callbackIncrement: " + aString);
+ this.incrementCallBackCount();
+ Assert.fail("CallBackSetCallbackConvNonSerCallback: callbackIncrement called");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.java
new file mode 100644
index 0000000000..e7a3b144f6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.java
@@ -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 org.apache.tuscany.sca.test;
+
+import java.io.Serializable;
+
+public class CallBackSetCallbackConvObjectCallback implements CallBackSetCallbackConvCallback, Serializable
+{
+ private int callBackCount = 0;
+
+ public CallBackSetCallbackConvObjectCallback() {
+ super();
+ }
+
+ public synchronized void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public synchronized int getCount() {
+ return callBackCount;
+ }
+
+ public void callBackMessage(String aString) {
+
+ System.out.println("Entering CallBackSetCallbackObjectCallback callBackMessage: " + aString);
+
+ }
+
+ public void callBackIncrement(String aString) {
+
+ System.out.println("Entering callback increment: " + aString);
+
+ this.incrementCallBackCount();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvService.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvService.java
new file mode 100644
index 0000000000..692b6dfc35
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvService.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 org.apache.tuscany.sca.test;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+
+// @Remotable
+@Conversational
+@Callback(CallBackSetCallbackConvCallback.class)
+/**
+ *
+ */
+public interface CallBackSetCallbackConvService {
+
+ public void knockKnock(String aString);
+
+ public void setCallbackIllegally(String aString);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvServiceImpl.java
new file mode 100644
index 0000000000..bca94ce407
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvServiceImpl.java
@@ -0,0 +1,98 @@
+/*
+ * 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.test;
+
+import java.io.File;
+
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(CallBackSetCallbackConvService.class)
+@Scope("CONVERSATION")
+public class CallBackSetCallbackConvServiceImpl implements CallBackSetCallbackConvService {
+
+ @Callback
+ protected CallBackSetCallbackConvCallback callback;
+ @Context
+ protected ComponentContext context;
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallBackSetCallbackConvServiceImpl message received: " + aString);
+ callback.callBackMessage("Who's There");
+ callback.callBackIncrement("This should do it");
+ System.out.println("CallBackSetCallbackConvServiceImpl response sent");
+
+ }
+
+ public void setCallbackIllegally(String aString) {
+
+ System.out.println("CallBackBasicServiceImpl.setCallbackIllegally() message received: " + aString);
+
+ boolean exceptionProduced = false;
+ RequestContext requestContext = null;
+ ServiceReference serviceRef = null;
+
+ // Context is not working properly so we can't trust that this is
+ // working.....
+ try {
+ requestContext = context.getRequestContext();
+ serviceRef = (ServiceReference) requestContext.getServiceReference();
+ } catch (Exception ex) {
+ System.out.println("CallBackBasicServiceImpl.setCallbackIllegally() " + ex.toString());
+ ex.printStackTrace();
+ return;
+ }
+
+ // Ok, call setCallback with my own service reference.
+ try {
+ serviceRef.setCallback(serviceRef);
+ } catch (NullPointerException npe) {
+ // This is not an appropriate exception.
+ System.out.println("Test10 NPE exception during setCallback to own service reference");
+ npe.printStackTrace();
+ return;
+ }
+ // This needs to catch the appropriate exception, once we figure out
+ // what is needs to be!
+ catch (Exception ex) {
+ exceptionProduced = true;
+ System.out.println("Test10 appropriate exception caught during setCallback to own service reference");
+ }
+ ;
+
+ // If we get the exception we are looking for then create the marker
+ // file.
+ if (exceptionProduced == true) {
+ File aFile = new File("target/test10_marker");
+ try {
+ aFile.createNewFile();
+ } catch (Exception ex) {
+ System.out.println("Error Creating target/test10_marker marker file");
+ ex.printStackTrace();
+ }
+ }
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite
new file mode 100644
index 0000000000..ce73417f94
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvTestCase.java b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvTestCase.java
new file mode 100644
index 0000000000..45bdaea9ab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/callback-set-conversation/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvTestCase.java
@@ -0,0 +1,48 @@
+/*
+ * 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.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackSetCallbackConvTestCase extends TestCase {
+
+ private SCADomain domain;
+ private CallBackSetCallbackConvClient aCallBackClient;
+
+ public void testCallBackSetCallback() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackSetCallbackConvTest.composite");
+
+ aCallBackClient =
+ domain.getService(CallBackSetCallbackConvClient.class,
+ "CallBackSetCallbackConvClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/pom.xml b/tags/java/sca/1.5.1-RC2/itest/component-type/pom.xml
new file mode 100644
index 0000000000..572f248894
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/pom.xml
@@ -0,0 +1,47 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-component-type
+ Apache Tuscany SCA iTest Component Type
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddService.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddService.java
new file mode 100644
index 0000000000..188451ebac
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddService.java
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+/**
+ * The Add service interface
+ */
+public interface AddService {
+
+ double add(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddServiceImpl.java
new file mode 100644
index 0000000000..8b6fe066a6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/AddServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Add service
+ */
+public class AddServiceImpl implements AddService {
+
+ public double add(double n1, double n2) {
+ return n1 + n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorClient.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorClient.java
new file mode 100644
index 0000000000..08afd922b3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorClient.java
@@ -0,0 +1,45 @@
+/*
+ * 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.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+public class CalculatorClient {
+ public static void main(String[] args) throws Exception {
+
+ SCADomain scaDomain = SCADomain.newInstance("Calculator.composite");
+
+ CalculatorService calculatorService =
+ scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent/CalculatorService");
+
+ // Calculate
+ System.out.println("3 + 2=" + calculatorService.add(3, 2));
+ System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+ System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+ System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+
+ scaDomain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorService.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..031fa8b912
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorService.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+
+/**
+ * The Calculator service interface.
+ */
+public interface CalculatorService {
+
+ double add(double n1, double n2);
+
+ double subtract(double n1, double n2);
+
+ double multiply(double n1, double n2);
+
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java
new file mode 100644
index 0000000000..1209ac128a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java
@@ -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;
+
+/**
+ * An implementation of the Calculator service.
+ */
+public class CalculatorServiceImpl implements CalculatorService {
+
+ private AddService addService;
+ private SubtractService subtractService;
+ private MultiplyService multiplyService;
+ private DivideService divideService;
+
+ public void setAddService(AddService addService) {
+ this.addService = addService;
+ }
+
+ public void setSubtractService(SubtractService subtractService) {
+ this.subtractService = subtractService;
+ }
+
+ public void setDivideService(DivideService divideService) {
+ this.divideService = divideService;
+ }
+
+ public void setMultiplyService(MultiplyService multiplyService) {
+ this.multiplyService = multiplyService;
+ }
+
+ public double add(double n1, double n2) {
+ return addService.add(n1, n2);
+ }
+
+ public double subtract(double n1, double n2) {
+ return subtractService.subtract(n1, n2);
+ }
+
+ public double multiply(double n1, double n2) {
+ return multiplyService.multiply(n1, n2);
+ }
+
+ public double divide(double n1, double n2) {
+ return divideService.divide(n1, n2);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideService.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideService.java
new file mode 100644
index 0000000000..30d248208b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideService.java
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+/**
+ * The divide service interface
+ */
+public interface DivideService {
+
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideServiceImpl.java
new file mode 100644
index 0000000000..f7ac0b7287
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/DivideServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Divide service.
+ */
+public class DivideServiceImpl implements DivideService {
+
+ public double divide(double n1, double n2) {
+ return n1 / n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyService.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyService.java
new file mode 100644
index 0000000000..5290605938
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyService.java
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+/**
+ * The interface for the multiply service
+ */
+public interface MultiplyService {
+
+ double multiply(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyServiceImpl.java
new file mode 100644
index 0000000000..b7dca792b2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/MultiplyServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Multiply service.
+ */
+public class MultiplyServiceImpl implements MultiplyService {
+
+ public double multiply(double n1, double n2) {
+ return n1 * n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractService.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractService.java
new file mode 100644
index 0000000000..bf0d1882b6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractService.java
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+/**
+ * The interface for the multiply service
+ */
+public interface SubtractService {
+
+ double subtract(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractServiceImpl.java
new file mode 100644
index 0000000000..77b128ab8d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/java/calculator/SubtractServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the subtract service.
+ */
+public class SubtractServiceImpl implements SubtractService {
+
+ public double subtract(double n1, double n2) {
+ return n1 - n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/Calculator.composite b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/Calculator.composite
new file mode 100644
index 0000000000..b229787657
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/Calculator.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/AddServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/AddServiceImpl.componentType
new file mode 100644
index 0000000000..00c48e5a35
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/AddServiceImpl.componentType
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/CalculatorServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/CalculatorServiceImpl.componentType
new file mode 100644
index 0000000000..74bedc0a98
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/CalculatorServiceImpl.componentType
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/DivideServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/DivideServiceImpl.componentType
new file mode 100644
index 0000000000..289fcc3e11
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/DivideServiceImpl.componentType
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/MultiplyServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/MultiplyServiceImpl.componentType
new file mode 100644
index 0000000000..2d8a879cda
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/MultiplyServiceImpl.componentType
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/SubtractServiceImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/SubtractServiceImpl.componentType
new file mode 100644
index 0000000000..6214955141
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/main/resources/calculator/SubtractServiceImpl.componentType
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/component-type/src/test/java/calculator/CalculatorTestCase.java b/tags/java/sca/1.5.1-RC2/itest/component-type/src/test/java/calculator/CalculatorTestCase.java
new file mode 100644
index 0000000000..08fc8e33bf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/component-type/src/test/java/calculator/CalculatorTestCase.java
@@ -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 junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This shows how to test the Calculator service component.
+ */
+public class CalculatorTestCase extends TestCase {
+
+ private CalculatorService calculatorService;
+ private SCADomain scaDomain;
+
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("Calculator.composite");
+ calculatorService = scaDomain.getService(CalculatorService.class, "CalculatorServiceComponent/CalculatorService");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ public void testCalculator() throws Exception {
+ // Calculate
+ assertEquals(calculatorService.add(3, 2), 5.0);
+ assertEquals(calculatorService.subtract(3, 2), 1.0);
+ assertEquals(calculatorService.multiply(3, 2), 6.0);
+ assertEquals(calculatorService.divide(3, 2), 1.5);
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/build-jar.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/build-jar.xml
new file mode 100644
index 0000000000..299ce6864f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/build-jar.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/pom.xml
new file mode 100644
index 0000000000..ca54eca210
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/pom.xml
@@ -0,0 +1,203 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-classloader-classes
+ Apache Tuscany Contribution ClassLoader Test : Contribution Classes
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ itest-contribution-classloader-classes
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.1
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ create-jar
+ generate-test-sources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/Customer.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/Customer.java
new file mode 100644
index 0000000000..814c38777a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/Customer.java
@@ -0,0 +1,35 @@
+/*
+ * 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 supplychain.customer;
+
+import org.osoa.sca.annotations.OneWay;
+
+/**
+ * This is the business interface of the Customer service component.
+ */
+public interface Customer {
+
+ public void purchaseGoods();
+
+ @OneWay
+ public void notifyShipment(String order);
+
+ public int outstandingOrderCount();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java
new file mode 100644
index 0000000000..e4daf0ec02
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java
@@ -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 supplychain.customer;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.retailer.Retailer;
+
+/**
+ * This class implements the Customer service component (POJO implementation).
+ */
+@Service(Customer.class)
+@Scope("COMPOSITE")
+public class JavaCustomerComponentImpl implements Customer {
+
+ private static int outstandingOrderCount;
+
+ private Retailer retailer;
+
+ public JavaCustomerComponentImpl() {
+ System.out.println("Created " + this.getClass().getName() +
+ " using: " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ public void purchaseGoods() {
+ outstandingOrderCount++;
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ outstandingOrderCount--;
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+ public int outstandingOrderCount() {
+ return outstandingOrderCount;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/illegal/JavaCustomerComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/illegal/JavaCustomerComponentImpl.java
new file mode 100644
index 0000000000..e4b3bc7048
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/illegal/JavaCustomerComponentImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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 supplychain.illegal;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.customer.Customer;
+import supplychain.retailer.JavaRetailerComponentImpl;
+import supplychain.retailer.Retailer;
+import supplychain.warehouse.JavaWarehouseComponentImpl;
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Customer service component (POJO implementation).
+ */
+@Service(Customer.class)
+@Scope("COMPOSITE")
+public class JavaCustomerComponentImpl implements Customer {
+
+ private static int outstandingOrderCount;
+
+ private Retailer retailer;
+
+ public JavaCustomerComponentImpl() {
+ System.out.println("Created " + this.getClass().getName() +
+ " using: " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ public void purchaseGoods() {
+
+ Retailer retailerImpl = new JavaRetailerComponentImpl();
+ System.out.println("Created a retailer from Customer " + retailerImpl);
+
+ Warehouse warehouseImpl = new JavaWarehouseComponentImpl();
+ System.out.println("Created a warehouse from Customer " + warehouseImpl);
+
+ outstandingOrderCount++;
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ outstandingOrderCount--;
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+ public int outstandingOrderCount() {
+ return outstandingOrderCount;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java
new file mode 100644
index 0000000000..698aa2aa5d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java
@@ -0,0 +1,61 @@
+/*
+ * 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 supplychain.retailer;
+
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Retailer service component (POJO implementation).
+ */
+@Service(Retailer.class)
+@Scope("STATELESS")
+public class JavaRetailerComponentImpl implements Retailer {
+
+ private Warehouse warehouse;
+
+ public JavaRetailerComponentImpl() {
+ System.out.println("Created " + this.getClass().getName() +
+ " using: " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setWarehouse(Warehouse warehouse) {
+ this.warehouse = warehouse;
+ }
+
+
+ public Warehouse getWarehouse() {
+ return warehouse;
+ }
+
+ public void submitOrder(String order) {
+
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/Retailer.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/Retailer.java
new file mode 100644
index 0000000000..1e87d59af1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/retailer/Retailer.java
@@ -0,0 +1,28 @@
+/*
+ * 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 supplychain.retailer;
+
+/**
+ * This is the business interface of the Retailer service component.
+ */
+public interface Retailer {
+
+ public void submitOrder(String order);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java
new file mode 100644
index 0000000000..9e01f00a79
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java
@@ -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 supplychain.shipper;
+
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.customer.Customer;
+
+/**
+ * This class implements the Shipper service component (POJO implementation).
+ */
+@Service(Shipper.class)
+@Scope("COMPOSITE")
+public class JavaShipperComponentImpl implements Shipper {
+
+ private Customer customer;
+
+ public JavaShipperComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ " using: " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+ public void processShipment(String order) {
+ customer.notifyShipment(order + ", shipped");
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/Shipper.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/Shipper.java
new file mode 100644
index 0000000000..2514928c10
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/shipper/Shipper.java
@@ -0,0 +1,28 @@
+/*
+ * 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 supplychain.shipper;
+
+/**
+ * This is the business interface of the Shipper service component.
+ */
+public interface Shipper {
+
+ public void processShipment(String order);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java
new file mode 100644
index 0000000000..cdd12d589d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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 supplychain.warehouse;
+
+import org.osoa.sca.annotations.Scope;
+
+import supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service component (POJO implementation).
+ */
+@Scope("STATELESS")
+public class JavaWarehouseComponentImpl implements Warehouse {
+
+ private Shipper shipper;
+
+ public JavaWarehouseComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ " using: " + this.getClass().getClassLoader());
+ }
+
+ public void setShipper(Shipper shipper) {
+ this.shipper = shipper;
+ }
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/Warehouse.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/Warehouse.java
new file mode 100644
index 0000000000..6f1f6b8730
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/java/supplychain/warehouse/Warehouse.java
@@ -0,0 +1,28 @@
+/*
+ * 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 supplychain.warehouse;
+
+/**
+ * This is the business interface of the Warehouse service component.
+ */
+public interface Warehouse {
+
+ public void fulfillOrder(String order);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/complete-supplychain-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/complete-supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..714d1826e1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/complete-supplychain-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-impl-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-impl-sca-contribution.xml
new file mode 100644
index 0000000000..7f7dc969e2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-impl-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-interface-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-interface-sca-contribution.xml
new file mode 100644
index 0000000000..7f7dc969e2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-interface-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml
new file mode 100644
index 0000000000..8a2bec308f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal-customer-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal-customer-sca-contribution.xml
new file mode 100644
index 0000000000..c77c4c1c7e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal-customer-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal1-supplychain-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal1-supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..210a68011f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal1-supplychain-sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal2-supplychain-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal2-supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..d118cceef9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/illegal2-supplychain-sca-contribution.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml
new file mode 100644
index 0000000000..d37b6659da
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml
new file mode 100644
index 0000000000..77b28d9023
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..8ec290a831
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml
new file mode 100644
index 0000000000..1398416978
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/illegalsupplychain.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/illegalsupplychain.composite
new file mode 100644
index 0000000000..db1f0d34e7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/illegalsupplychain.composite
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/supplychain.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/supplychain.composite
new file mode 100644
index 0000000000..5be79b741a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/supplychain.composite
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/warehouse/JavaWarehouseComponentImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/warehouse/JavaWarehouseComponentImpl.componentType
new file mode 100644
index 0000000000..a76fae8090
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-classes/src/main/resources/supplychain/warehouse/JavaWarehouseComponentImpl.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/pom.xml
new file mode 100644
index 0000000000..b96b2a2482
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/pom.xml
@@ -0,0 +1,60 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-classloader-test
+ Apache Tuscany Contribution Classloader tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-monitor
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionTestCase.java
new file mode 100644
index 0000000000..692f16f6f6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionTestCase.java
@@ -0,0 +1,373 @@
+/*
+ * 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.test.contribution;
+
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URLClassLoader;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/*
+ *
+ * Contribution ClassLoading integration tests
+ */
+
+public class ContributionTestCase {
+
+ private SupplyChain supplyChain;
+
+
+ @Before
+ public void setUp() throws Exception {
+ supplyChain = new SupplyChain();
+ }
+
+
+ @After
+ public void tearDown() throws Exception {
+
+ supplyChain.tearDown();
+
+ }
+
+
+ /**
+ * Test static ClassLoading for classes that are visible from contribution
+ *
+ * @throws Exception
+ */
+ public void staticClassLoadingTestForVisibleClasses() throws Exception {
+
+ Contribution customerContribution = supplyChain.getContribution("Customer");
+ ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+ customerClassRef = customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+ Class> customerClass = customerClassRef.getJavaClass();
+
+ Class customerClassFromContribution = customerContribution.getClassLoader().loadClass("supplychain.customer.Customer");
+ Assert.assertEquals(customerClass, customerClassFromContribution);
+
+ Object customer = supplyChain.getCustomer(customerClass);
+
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+
+ m = customerClass.getMethod("outstandingOrderCount");
+
+ int retries = 10;
+ int outstandingCount = 1;
+ while (retries-- > 0) {
+
+ outstandingCount = (int)(Integer)m.invoke(customer);
+ if (outstandingCount == 0)
+ break;
+ else
+ Thread.sleep(100);
+ }
+ Assert.assertEquals(0, outstandingCount);
+
+
+ }
+
+
+ /**
+ * Test dynamic ClassLoading for classes that are visible from contribution
+ *
+ * @throws Exception
+ */
+ public void dynamicClassLoadingTestForVisibleClasses() throws Exception {
+
+ Contribution customerContribution = supplyChain.getContribution("Customer");
+ Contribution retailerContribution = supplyChain.getContribution("Retailer");
+ Contribution warehouseContribution = supplyChain.getContribution("Warehouse");
+ Contribution shipperContribution = supplyChain.getContribution("Shipper");
+ Contribution supplyChainContribution = supplyChain.getContribution("SupplyChain");
+
+ ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+ customerClassRef = customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+ Class customerClass = customerClassRef.getJavaClass();
+
+ Class customerClassFromContribution = customerContribution.getClassLoader().loadClass("supplychain.customer.Customer");
+ Assert.assertEquals(customerClass, customerClassFromContribution);
+
+ Object customer = supplyChain.getCustomer(customerClass);
+ Assert.assertTrue(customerClass.isInstance(customer));
+
+ ClassReference retailerClassRef = new ClassReference("supplychain.retailer.Retailer");
+ retailerClassRef = retailerContribution.getModelResolver().resolveModel(ClassReference.class, retailerClassRef);
+ Class retailerClass = retailerClassRef.getJavaClass();
+
+ Class retailerClassFromContribution = retailerContribution.getClassLoader().loadClass("supplychain.retailer.Retailer");
+ Assert.assertEquals(retailerClass, retailerClassFromContribution);
+
+ Class retailerClassFromCustomer = customerContribution.getClassLoader().loadClass("supplychain.retailer.Retailer");
+ Assert.assertEquals(retailerClass, retailerClassFromCustomer);
+
+ ClassReference warehouseClassRef = new ClassReference("supplychain.warehouse.Warehouse");
+ warehouseClassRef = warehouseContribution.getModelResolver().resolveModel(ClassReference.class, warehouseClassRef);
+ Class warehouseClass = warehouseClassRef.getJavaClass();
+
+ Class warehouseClassFromContribution = warehouseContribution.getClassLoader().loadClass("supplychain.warehouse.Warehouse");
+ Assert.assertEquals(warehouseClass, warehouseClassFromContribution);
+
+ Class warehouseClassFromRetailer = retailerContribution.getClassLoader().loadClass("supplychain.warehouse.Warehouse");
+ Assert.assertEquals(warehouseClass, warehouseClassFromRetailer);
+
+ ClassReference shipperClassRef = new ClassReference("supplychain.shipper.Shipper");
+ shipperClassRef = shipperContribution.getModelResolver().resolveModel(ClassReference.class, shipperClassRef);
+ Class shipperClass = shipperClassRef.getJavaClass();
+
+ Class shipperClassFromContribution = shipperContribution.getClassLoader().loadClass("supplychain.shipper.Shipper");
+ Assert.assertEquals(shipperClass, shipperClassFromContribution);
+
+ Class shipperClassFromWarehouse = shipperContribution.getClassLoader().loadClass("supplychain.shipper.Shipper");
+ Assert.assertEquals(shipperClass, shipperClassFromWarehouse);
+
+ Class customerClassFromShipper = shipperContribution.getClassLoader().loadClass("supplychain.customer.Customer");
+ Assert.assertEquals(customerClass, customerClassFromShipper);
+
+ Class customerClassFromSupplyChain = supplyChainContribution.getClassLoader().loadClass("supplychain.customer.Customer");
+ Assert.assertEquals(customerClass, customerClassFromSupplyChain);
+ Class retailerClassFromSupplyChain = supplyChainContribution.getClassLoader().loadClass("supplychain.retailer.Retailer");
+ Assert.assertEquals(retailerClass, retailerClassFromSupplyChain);
+ Class warehouseClassFromSupplyChain = supplyChainContribution.getClassLoader().loadClass("supplychain.warehouse.Warehouse");
+ Assert.assertEquals(warehouseClass, warehouseClassFromSupplyChain);
+ Class shipperClassFromSupplyChain = supplyChainContribution.getClassLoader().loadClass("supplychain.shipper.Shipper");
+ Assert.assertEquals(shipperClass, shipperClassFromSupplyChain);
+
+ }
+
+ /**
+ * Test dynamic ClassLoading for classes that are visible from contribution
+ *
+ * @throws Exception
+ */
+ public void dynamicClassLoadingTestForNonImportedClasses() throws Exception {
+
+ Contribution customerContribution = supplyChain.getContribution("Customer");
+ Contribution shipperContribution = supplyChain.getContribution("Shipper");
+
+ Class customerClass = customerContribution.getClassLoader().loadClass("supplychain.customer.Customer");
+ Class shipperClass = shipperContribution.getClassLoader().loadClass("supplychain.shipper.Shipper");
+
+ try {
+ customerClass.getClassLoader().loadClass("supplychain.warehouse.Warehouse");
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+ try {
+ customerClass.getClassLoader().loadClass("supplychain.shipper.JavaShipperComponentImpl");
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+
+ try {
+ Class.forName("supplychain.warehouse.Warehouse", true, customerClass.getClassLoader());
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+ try {
+ Class.forName("supplychain.shipper.JavaShipperComponentImpl", true, customerClass.getClassLoader());
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+
+ try {
+ shipperClass.getClassLoader().loadClass("supplychain.warehouse.JavaWarehouseComponentImpl");
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+ try {
+ shipperClass.getClassLoader().loadClass("supplychain.retailer.Retailer");
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+
+ try {
+ Class.forName("supplychain.warehouse.JavaWarehouseComponentImpl", true, shipperClass.getClassLoader());
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+ try {
+ Class.forName("supplychain.retailer.Retailer", true, shipperClass.getClassLoader());
+ Assert.fail("Non-imported class loaded incorrectly");
+ } catch (ClassNotFoundException e) {
+ }
+
+
+ }
+
+
+ /**
+ * This test ensures that classes from imported packages can be statically loaded
+ * from other contributions even though the classes are not on CLASSPATH or on the
+ * parent ClassLoader, or the thread context ClassLoader.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testValidStaticClassLoading() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader());
+
+ staticClassLoadingTestForVisibleClasses();
+ }
+
+ /**
+ * This test ensures that all imported classes are loaded from the exporting contributions
+ * rather than the parent classLoader. If any of the interface classes were incorrectly loaded
+ * through the parent ClassLoader, LinkageError should result.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testValidStaticClassLoadingWithContributionsInParentClassLoader() throws Exception {
+
+
+ URLClassLoader parentClassLoader = new URLClassLoader(
+ supplyChain.getContributionURLs(),
+ this.getClass().getClassLoader());
+
+ supplyChain.setUp(parentClassLoader);
+
+ staticClassLoadingTestForVisibleClasses();
+ }
+
+
+ /**
+ * This test ensures that classes from imported packages can be dynamically loaded from
+ * other contributions even though the classes are not on CLASSPATH or on the
+ * parent ClassLoader, or the thread context ClassLoader.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testValidDynamicClassLoading() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader());
+
+ dynamicClassLoadingTestForVisibleClasses();
+ }
+
+ /**
+ * This test ensures that all imported classes are dynamically loaded from the exporting
+ * contributions rather than the parent classLoader. If any of the interface classes were
+ * incorrectly loaded through the parent, NoClassDefFoundError or LinkageError should result.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testValidDynamicClassLoadingWithContributionsInParentClassLoader() throws Exception {
+
+
+ URLClassLoader parentClassLoader = new URLClassLoader(
+ supplyChain.getContributionURLs(),
+ this.getClass().getClassLoader());
+
+ supplyChain.setUp(parentClassLoader);
+
+ dynamicClassLoadingTestForVisibleClasses();
+ }
+
+ @Test
+ public void testIllegalStaticClassLoading1() throws Exception {
+ // FIXME we have commented this code as we are not throwing exceptions anymore
+ // need to deal with monitor logs to catch the errors.
+
+ /*try {
+ supplyChain.setUp(this.getClass().getClassLoader(), SupplyChain.SUPPLYCHAIN_ILLEGAL_1);
+
+ Assert.fail("Composite containing unresolved references resolved incorrectly");
+ } catch (ContributionResolveException e) {
+ }*/
+ }
+
+ @Test
+ public void testIllegalStaticClassLoading2() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader(), SupplyChain.SUPPLYCHAIN_ILLEGAL_2);
+
+ Contribution customerContribution = supplyChain.getContribution("Customer");
+ ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+ customerClassRef = customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+ Class> customerClass = customerClassRef.getJavaClass();
+
+ Object customer = supplyChain.getCustomer(customerClass);
+
+ try {
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+ Assert.fail("Classloading exception not thrown as expected");
+ } catch (InvocationTargetException e) {
+
+ Throwable cause = e.getCause();
+ Assert.assertTrue(cause instanceof NoClassDefFoundError);
+ Assert.assertTrue(cause.getMessage().indexOf("JavaWarehouseComponentImpl") > -1); }
+
+ }
+
+ /**
+ * This test ensures that classes from imported packages can be dynamically loaded from
+ * other contributions even though the classes are not on CLASSPATH or on the
+ * parent ClassLoader, or the thread context ClassLoader.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testIllegalDynamicClassLoading() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader());
+
+ dynamicClassLoadingTestForNonImportedClasses();
+ }
+
+
+ /**
+ * Self-contained contribution containing composites, componentType files and implementations
+ * should not require import/export statements for these files to find each other or for Tuscany
+ * to load these files.
+ * @throws Exception
+ */
+ @Test
+ public void testSelfContainedContribution() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader(), SupplyChain.SUPPLYCHAIN_SELFCONTAINED);
+
+ staticClassLoadingTestForVisibleClasses();
+ }
+
+ @Test
+ public void testContributionsWithSplitPackage() throws Exception {
+
+ supplyChain.setUp(this.getClass().getClassLoader(), SupplyChain.SUPPLYCHAIN_SPLITPACKAGE);
+
+ staticClassLoadingTestForVisibleClasses();
+
+ dynamicClassLoadingTestForNonImportedClasses();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/SupplyChain.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/SupplyChain.java
new file mode 100644
index 0000000000..1ec7aaaa3a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/SupplyChain.java
@@ -0,0 +1,231 @@
+/*
+ * 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.test.contribution;
+
+
+import java.io.File;
+import java.net.URL;
+import java.util.Hashtable;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.junit.Assert;
+
+/*
+ *
+ * Contribution ClassLoading integration tests
+ */
+
+public class SupplyChain {
+
+ public static final int SUPPLYCHAIN = 0;
+ public static final int SUPPLYCHAIN_ILLEGAL_1 = 1;
+ public static final int SUPPLYCHAIN_ILLEGAL_2 = 2;
+ public static final int SUPPLYCHAIN_SELFCONTAINED = 3;
+ public static final int SUPPLYCHAIN_SPLITPACKAGE = 4;
+
+ private String folderName = "../contribution-classes/target/classes";
+
+ private String customerJarName = "Customer";
+ private String retailerJarName = "Retailer";
+ private String warehouseJarName = "Warehouse";
+ private String shipperJarName = "Shipper";
+ private String supplychainJarName = "SupplyChain";
+ private String illegalSupplyChain1JarName = "IllegalSupplyChain1";
+ private String illegalSupplyChain2JarName = "IllegalSupplyChain2";
+ private String illegalCustomerJarName = "IllegalCustomer";
+ private String completeSupplychainJarName = "CompleteSupplyChain";
+ private String customerInterfaceJarName = "CustomerInterface";
+ private String customerImplJarName = "CustomerImpl";
+
+
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+ private int supplyChainVersion;
+
+ private Hashtable contributions = new Hashtable();
+
+ private URL customerContribURL;
+ private URL retailerContribURL;
+ private URL warehouseContribURL;
+ private URL shipperContribURL;
+ private URL supplyChainContribURL;
+ private URL illegalSupplyChain1ContribURL;
+ private URL illegalSupplyChain2ContribURL;
+ private URL illegalCustomerContribURL;
+ private URL completeSupplyChainContribURL;
+ private URL customerInterfaceContribURL;
+ private URL customerImplContribURL;
+
+ public SupplyChain() throws Exception {
+
+ customerContribURL = new File(folderName + "/" + customerJarName + ".jar").toURI().toURL();
+ retailerContribURL = new File(folderName + "/" + retailerJarName + ".jar").toURI().toURL();
+ warehouseContribURL = new File(folderName + "/" + warehouseJarName + ".jar").toURI().toURL();
+ shipperContribURL = new File(folderName + "/" + shipperJarName + ".jar").toURI().toURL();
+ supplyChainContribURL = new File(folderName + "/" + supplychainJarName + ".jar").toURI().toURL();
+ illegalSupplyChain1ContribURL = new File(folderName + "/" + illegalSupplyChain1JarName + ".jar").toURI().toURL();
+ illegalSupplyChain2ContribURL = new File(folderName + "/" + illegalSupplyChain2JarName + ".jar").toURI().toURL();
+ illegalCustomerContribURL = new File(folderName + "/" + illegalCustomerJarName + ".jar").toURI().toURL();
+ completeSupplyChainContribURL = new File(folderName + "/" + completeSupplychainJarName + ".jar").toURI().toURL();
+ customerInterfaceContribURL = new File(folderName + "/" + customerInterfaceJarName + ".jar").toURI().toURL();
+ customerImplContribURL = new File(folderName + "/" + customerImplJarName + ".jar").toURI().toURL();
+ }
+
+ public void setUp(ClassLoader parentClassLoader) throws Exception {
+ this.setUp(parentClassLoader, SUPPLYCHAIN);
+ }
+
+ public void setUp(ClassLoader parentClassLoader, int supplyChainVersion) throws Exception {
+
+ this.supplyChainVersion = supplyChainVersion;
+
+ Thread.currentThread().setContextClassLoader(parentClassLoader);
+
+ //Create an embedded SCA domain
+ domain = new EmbeddedSCADomain(parentClassLoader, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ this.contributionService = domain.getContributionService();
+
+ addContributions(supplyChainVersion);
+ }
+
+ protected void addContributions(int supplyChainVersion) throws Exception {
+
+ Contribution contribution;
+
+ if (supplyChainVersion != SUPPLYCHAIN_SELFCONTAINED) {
+ contribution = contributionService.contribute("Shipper", shipperContribURL, true);
+ contributions.put("Shipper", contribution);
+ contribution = contributionService.contribute("Warehouse", warehouseContribURL, true);
+ contributions.put("Warehouse", contribution);
+ contribution = contributionService.contribute("Retailer", retailerContribURL, true);
+ contributions.put("Retailer", contribution);
+ }
+
+ switch (supplyChainVersion) {
+ case SUPPLYCHAIN:
+ contribution = contributionService.contribute("Customer", customerContribURL, true);
+ contributions.put("Customer", contribution);
+
+ contribution = contributionService.contribute("SupplyChain", supplyChainContribURL, true);
+ contributions.put("SupplyChain", contribution);
+ break;
+ case SUPPLYCHAIN_ILLEGAL_1:
+ contribution = contributionService.contribute("Customer", customerContribURL, true);
+ contributions.put("Customer", contribution);
+
+ contribution = contributionService.contribute("SupplyChain", illegalSupplyChain1ContribURL, true);
+ contributions.put("SupplyChain", contribution);
+ break;
+ case SUPPLYCHAIN_ILLEGAL_2:
+ contribution = contributionService.contribute("Customer", illegalCustomerContribURL, true);
+ contributions.put("Customer", contribution);
+
+ contribution = contributionService.contribute("SupplyChain", illegalSupplyChain2ContribURL, true);
+ contributions.put("SupplyChain", contribution);
+ break;
+ case SUPPLYCHAIN_SELFCONTAINED:
+ contribution = contributionService.contribute("SupplyChain", completeSupplyChainContribURL, true);
+ contributions.put("SupplyChain", contribution);
+ break;
+ case SUPPLYCHAIN_SPLITPACKAGE:
+ contribution = contributionService.contribute("Customer", customerInterfaceContribURL, true);
+ contributions.put("Customer", contribution);
+
+ contribution = contributionService.contribute("CustomerImpl", customerImplContribURL, true);
+ contributions.put("CustomerImpl", contribution);
+
+ contribution = contributionService.contribute("SupplyChain", supplyChainContribURL, true);
+ contributions.put("SupplyChain", contribution);
+ break;
+ }
+
+ // SUPPLYCHAIN_ILLEGAL_1 should throw an exception when the composite is resolved, and hence
+ // should not get this far.
+ Assert.assertTrue(supplyChainVersion != SUPPLYCHAIN_ILLEGAL_1);
+
+
+ for (Contribution c : contributions.values()) {
+
+ for (Composite deployable : c.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : contributions.get("SupplyChain").getDeployables() ) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void tearDown() throws Exception {
+
+ if (domain == null)
+ return;
+
+ for (String contributionURI : contributions.keySet()) {
+ contributionService.remove(contributionURI);
+ }
+
+
+ if (contributions.get("SupplyChain") != null) {
+ // Stop Components from my composite
+ for (Composite deployable : contributions.get("SupplyChain").getDeployables() ) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ }
+
+ domain.stop();
+
+ domain.close();
+ }
+
+ public Contribution getContribution(String uri) {
+ if (supplyChainVersion == SUPPLYCHAIN_SELFCONTAINED)
+ return contributions.get("SupplyChain");
+ else
+ return contributions.get(uri);
+ }
+
+ public Object getCustomer(Class> customerClass) {
+ return domain.getService(customerClass, "CustomerComponent");
+ }
+
+ public URL[] getContributionURLs() {
+ return new URL[] {
+ customerContribURL,
+ retailerContribURL,
+ warehouseContribURL,
+ shipperContribURL,
+ supplyChainContribURL
+ };
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
new file mode 100644
index 0000000000..b123951ef6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/contribution-test/src/test/java/org/apache/tuscany/sca/test/contribution/TuscanyClassloadingTestCaseFIXME.java
@@ -0,0 +1,381 @@
+/*
+ * 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.test.contribution;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.osoa.sca.ServiceReference;
+
+/*
+ *
+ * Contribution ClassLoading integration tests
+ */
+
+//FIXME This test case needs some serious rework!
+// First it is very dependent on the names of the Tuscany runtime JARs
+// and this is going to be difficult to maintain
+// Second its usage of reflection requires the Tuscany implementation classes
+// to be made public and this breaks isolation between modules.
+public class TuscanyClassloadingTestCaseFIXME {
+
+ // private static final int SCA_API = 1;
+ // private static final int TUSCANY_CORE_SPI = 2;
+ // private static final int TUSCANY_RUNTIME = 3;
+ // private static final int TUSCANY_EXTENSIONS = 4;
+ // private static final int TUSCANY_DEPENDENCIES = 0;
+
+ private static final String[] scaApiJars = {"sca-api"};
+ private static final String[] tuscanyCoreSpiJars =
+ {"core-spi", "interface", "interface-java", "interface-wsdl", "assembly", "policy", "databinding",
+ "contribution", "definitions"};
+ private static final String[] tuscanyRuntimeJars =
+ {
+
+ "binding-sca-xml", "binding-sca", "assembly-java-dsl", "assembly-xml", "assembly-xsd", "contribution-impl",
+ "contribution-java", "contribution-namespace", "core-databinding", "core-spring", "core", "definitions-xml",
+ "domain-api", "domain-impl", "domain", "extension-helper", "host-embedded", "interface-java-xml",
+ "interface-wsdl-xml", "java2wsdl", "node-api", "node-impl", "node", "osgi-runtime", "policy-logging",
+ "policy-security", "policy-transaction", "policy-xml", "wsdl2java"};
+ private static final String[] tuscanyExtensionJars =
+ {"binding-dwr", "binding-ejb", "binding-feed", "binding-http", "binding-jms", "binding-jsonrpc",
+ "binding-notification", "binding-rmi", "binding-sca-axis2", "binding-ws-axis2", "binding-ws-xml",
+ "binding-ws", "databinding-axiom", "databinding-fastinfoset", "databinding-jaxb", "databinding-json",
+ "databinding-saxon", "databinding-sdo-axiom", "databinding-sdo", "databinding-xmlbeans", "host-http",
+ "host-jetty", "host-rmi", "host-tomcat", "host-webapp", "implementation-das.jar", "implementation-data.jar",
+ "implementation-java-runtime", "implementation-java-xml", "implementation-java",
+ "implementation-node-runtime", "implementation-node-xml", "implementation-node",
+ "implementation-notification", "implementation-osgi", "implementation-resource", "implementation-script",
+ "implementation-spring", "implementation-xquery", "contribution-osgi"};
+
+ private Class> embeddedDomainClass;
+ Object domain;
+
+ @Before
+ public void setUp() throws Exception {
+
+ embeddedDomainClass = getEmbeddedDomainClass();
+
+ Constructor c = embeddedDomainClass.getConstructor(ClassLoader.class, String.class);
+ // Create an embedded domain
+ domain = c.newInstance(embeddedDomainClass.getClassLoader(), "http://localhost");
+
+ // Start the domain
+ invokeNoArgsMethod(domain, "start");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+
+ // Stop the domain
+ invokeNoArgsMethod(domain, "stop");
+
+ }
+
+ /**
+ * Create a ClassLoader hierarchy for Tuscany runtime
+ * Dependencies <- SCA-API <- Core-SPI+ Runtime <- Extensions
+ * Load the embedded SCA domain class using the runtime ClassLoader
+ *
+ * @return embedded SCA domain class
+ * @throws Exception
+ */
+ private Class> getEmbeddedDomainClass() throws Exception {
+
+ URL[] scaApiUrls;
+ URL[] runtimeUrls;
+ URL[] extensionUrls;
+ URL[] dependencyUrls;
+
+ // When the test is run under Eclipse, the ClassLoader for the test is
+ // sun.misc.Launcher$AppClassLoader. The first code path is taken.
+ // When the test is run under Maven, the ClassLoader for the test is
+ // org.apache.maven.surefire.booter.IsolatedClassLoader, which is a subclass
+ // of URLClassLoader. The second code path is taken.
+ if (!(this.getClass().getClassLoader() instanceof URLClassLoader)) {
+ String classPath = System.getProperty("java.class.path");
+ String[] classPathEntries = classPath.split(System.getProperty("path.separator"));
+ HashSet dependentJars = new HashSet();
+ for (int i = 0; i < classPathEntries.length; i++) {
+ dependentJars.add(classPathEntries[i]);
+ }
+
+ scaApiUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars, scaApiJars);
+ runtimeUrls =
+ getTuscanyClassLoaderURLs(classPathEntries, dependentJars, tuscanyCoreSpiJars, tuscanyRuntimeJars);
+ extensionUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars, tuscanyExtensionJars);
+ dependencyUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars);
+ } else {
+ HashSet dependentJars = new HashSet();
+ URL[] classPathEntries = ((URLClassLoader)this.getClass().getClassLoader()).getURLs();
+ for (int i = 0; i < classPathEntries.length; i++) {
+ dependentJars.add(classPathEntries[i]);
+ }
+ scaApiUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars, scaApiJars);
+ runtimeUrls =
+ getTuscanyClassLoaderURLs(classPathEntries, dependentJars, tuscanyCoreSpiJars, tuscanyRuntimeJars);
+ extensionUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars, tuscanyExtensionJars);
+ dependencyUrls = getTuscanyClassLoaderURLs(classPathEntries, dependentJars);
+
+ }
+
+ boolean useSingleClassLoader =
+ (scaApiUrls == null || scaApiUrls.length == 0) || (runtimeUrls == null || runtimeUrls.length == 0)
+ || (extensionUrls == null || extensionUrls.length == 0)
+ || (dependencyUrls == null || dependencyUrls.length == 0);
+
+ if (useSingleClassLoader) {
+ return EmbeddedSCADomain.class;
+ } else {
+
+ ClassLoader dependencyLoader = new URLClassLoader(dependencyUrls, null);
+ ClassLoader scaApiLoader = new URLClassLoader(scaApiUrls, dependencyLoader);
+ ClassLoader runtimeClassLoader = new URLClassLoader(runtimeUrls, scaApiLoader);
+ ClassLoader extensionClassLoader = new URLClassLoader(extensionUrls, runtimeClassLoader);
+
+ Class> serviceDiscoveryClass = runtimeClassLoader.loadClass(ServiceDiscovery.class.getName());
+ Method getInstanceMethod = serviceDiscoveryClass.getMethod("getInstance");
+ Object serviceDiscoveryObj = getInstanceMethod.invoke(null);
+ Method registerClassLoaderMethod =
+ serviceDiscoveryClass.getMethod("registerClassLoader", ClassLoader.class);
+ registerClassLoaderMethod.invoke(serviceDiscoveryObj, extensionClassLoader);
+
+ Thread.currentThread().setContextClassLoader(extensionClassLoader);
+
+ return runtimeClassLoader.loadClass(EmbeddedSCADomain.class.getName());
+
+ }
+
+ }
+
+ /**
+ * From the list of entries in the test ClassLoader, match
+ * Tuscany jars corresponding to a ClassLoader, and return the list
+ * of matching entries as URLs.
+ * This method is used when the test is run under eclipse, using CLASSPATH
+ * based application ClassLoader.
+ *
+ * @param classPathEntries List of entries on CLASSPATH
+ * @param dependentJars Complete set of jars, remove jars corresponding to this
+ * ClassLoader from the set.
+ * @param jars List of Tuscany jars corresponding to this ClassLoader
+ * @return Matching URLs for the ClassLoader
+ * @throws IOException
+ */
+ private URL[] getTuscanyClassLoaderURLs(String[] classPathEntries, HashSet dependentJars, String[]... jars)
+ throws IOException {
+
+ String pathSeparator = System.getProperty("file.separator");
+ HashSet classPathEntrySet;
+
+ if (jars.length == 0)
+ classPathEntrySet = dependentJars;
+ else {
+ classPathEntrySet = new HashSet();
+
+ for (int i = 0; i < classPathEntries.length; i++) {
+
+ String classPathEntry = classPathEntries[i];
+ for (int j = 0; j < jars.length; j++) {
+ String[] jarList = jars[j];
+ if (jarList != null) {
+ for (int k = 0; k < jarList.length; k++) {
+ String jarName = "tuscany-" + jarList[k];
+ String alternateJarName = "modules" + pathSeparator + jarList[k];
+ if (classPathEntry.indexOf(jarName) >= 0 || classPathEntry.indexOf(alternateJarName) >= 0) {
+ classPathEntrySet.add(classPathEntry);
+ dependentJars.remove(classPathEntry);
+ }
+ }
+ }
+ }
+ }
+
+ }
+ ArrayList urls = new ArrayList();
+
+ for (String fileName : classPathEntrySet) {
+ File file = new File((String)fileName);
+ if (!file.exists()) {
+ throw new FileNotFoundException(fileName);
+
+ } else {
+ urls.add(file.toURL());
+
+ }
+ }
+
+ return (URL[])urls.toArray(new URL[urls.size()]);
+ }
+
+ /**
+ * From the list of URLs of the test ClassLoader, match
+ * Tuscany jars corresponding to a ClassLoader, and return the matching URLs
+ * This method is used when the test is run under Maven. The test ClassLoader is
+ * org.apache.maven.surefire.booter.IsolatedClassLoader, which is a subclass
+ * of URLClassLoader
+ *
+ * @param classPathEntries List of URLs from the test ClassLoader
+ * @param dependentJars Complete set of jars, remove jars corresponding to this
+ * ClassLoader from the set.
+ * @param jars List of Tuscany jars corresponding to this ClassLoader
+ * @return Matching URLs for the ClassLoader
+ * @throws IOException
+ */
+ private URL[] getTuscanyClassLoaderURLs(URL[] classPathEntries, HashSet dependentJars, String[]... jars)
+ throws IOException {
+
+ String pathSeparator = System.getProperty("file.separator");
+ HashSet classPathEntrySet;
+
+ if (jars.length == 0)
+ classPathEntrySet = dependentJars;
+ else {
+ classPathEntrySet = new HashSet();
+
+ for (int i = 0; i < classPathEntries.length; i++) {
+
+ URL classPathEntry = classPathEntries[i];
+ String classPathEntryStr = classPathEntry.getPath();
+ for (int j = 0; j < jars.length; j++) {
+ String[] jarList = jars[j];
+ if (jarList != null) {
+ for (int k = 0; k < jarList.length; k++) {
+ String jarName = "tuscany-" + jarList[k];
+ String alternateJarName = "modules" + pathSeparator + jarList[k];
+ if (classPathEntryStr.indexOf(jarName) >= 0 || classPathEntryStr.indexOf(alternateJarName) >= 0) {
+ classPathEntrySet.add(classPathEntry);
+ dependentJars.remove(classPathEntry);
+ }
+ }
+ }
+ }
+ }
+
+ }
+ return (URL[])classPathEntrySet.toArray(new URL[classPathEntrySet.size()]);
+ }
+
+ private Object invokeNoArgsMethod(Object obj, String methodName) throws Exception {
+
+ return obj.getClass().getMethod(methodName).invoke(obj);
+ }
+
+ private Object invokeOneArgMethod(Object obj, String methodName, Class argType, Object arg) throws Exception {
+
+ return obj.getClass().getMethod(methodName, argType).invoke(obj, arg);
+ }
+
+ /**
+ *
+ * Load Tuscany runtime using multiple ClassLoaders, and run supplychain
+ * test.
+ *
+ * @throws Exception
+ */
+ @SuppressWarnings("unchecked")
+ @Test
+ public void test() throws Exception {
+
+ ClassLoader runtimeClassloader = embeddedDomainClass.getClassLoader();
+
+ if (runtimeClassloader == this.getClass().getClassLoader()) {
+ System.out.println("Runtime and test loaded using the same classloader " + runtimeClassloader);
+ } else {
+ System.out
+ .println("Running test using separate Tuscany classloaders, runtime classloader=" + runtimeClassloader);
+ ClassLoader apiClassLoader =
+ runtimeClassloader.loadClass(ServiceReference.class.getName()).getClassLoader();
+ Assert.assertTrue(apiClassLoader != runtimeClassloader);
+
+ try {
+ runtimeClassloader.loadClass("org.apache.tuscany.sca.implementation.java.JavaImplementation");
+ Assert.fail("Loaded extension class incorrectly from runtimeClassLoader");
+ } catch (ClassNotFoundException e) {
+ }
+
+ }
+
+ // Contribute supplychain (as single contribution)
+ Object contributionService = invokeNoArgsMethod(domain, "getContributionService");
+ Method contributeMethod =
+ contributionService.getClass().getMethod("contribute", String.class, URL.class, boolean.class);
+
+ String folderName = "../contribution-classes/target/classes";
+ String supplychainJarName = "CompleteSupplyChain";
+ URL supplyChainContribURL = new File(folderName + "/" + supplychainJarName + ".jar").toURL();
+ Object contribution = contributeMethod.invoke(contributionService, "SupplyChain", supplyChainContribURL, true);
+
+ Object composite = ((List)invokeNoArgsMethod(contribution, "getDeployables")).get(0);
+ Object domainComposite = invokeNoArgsMethod(domain, "getDomainComposite");
+ List includes = (List)invokeNoArgsMethod(domainComposite, "getIncludes");
+ includes.add(composite);
+ //Object compositeBuilder = invokeNoArgsMethod(domain, "getCompositeBuilder");
+ Object compositeActivator = invokeNoArgsMethod(domain, "getCompositeActivator");
+
+ Class compositeClass = embeddedDomainClass.getClassLoader().loadClass(Composite.class.getName());
+ invokeOneArgMethod(domain, "buildComposite", compositeClass, composite);
+ invokeOneArgMethod(compositeActivator, "activate", compositeClass, composite);
+ invokeOneArgMethod(compositeActivator, "start", compositeClass, composite);
+
+ // Get customer service
+ Method getClassLoaderMethod = contribution.getClass().getMethod("getClassLoader");
+ ClassLoader classLoader = (ClassLoader)getClassLoaderMethod.invoke(contribution);
+
+ Class customerClass = classLoader.loadClass("supplychain.customer.Customer");
+ Method getServiceMethod = embeddedDomainClass.getMethod("getService", Class.class, String.class);
+ Object customer = getServiceMethod.invoke(domain, customerClass, "CustomerComponent");
+
+ // Invoke purchaseGoods
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+ m = customerClass.getMethod("outstandingOrderCount");
+
+ int retries = 10;
+ int outstandingCount = 1;
+ while (retries-- > 0) {
+
+ outstandingCount = (int)(Integer)m.invoke(customer);
+ if (outstandingCount == 0)
+ break;
+ else
+ Thread.sleep(100);
+ }
+ Assert.assertEquals(0, outstandingCount);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/pom.xml
new file mode 100644
index 0000000000..928701e060
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-classloader/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-classloader
+ pom
+ Apache Tuscany Contribution ClassLoader Integration Tests
+
+
+ contribution-classes
+ contribution-test
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/pom.xml
new file mode 100644
index 0000000000..74065fb4f5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-folder
+ Apache Tuscany SCA iTest Folder and ZIP Contribution
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionFolderTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionFolderTestCase.java
new file mode 100644
index 0000000000..9f9c15c14d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionFolderTestCase.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import calculator.CalculatorService;
+
+
+
+/**
+ * Test SCADomain.newInstance and invocation of a service.
+ *
+ * @version $Rev: 608205 $ $Date: 2008-01-02 20:29:05 +0000 (Wed, 02 Jan 2008) $
+ */
+public class ContributionFolderTestCase extends TestCase {
+
+ private SCADomain domain;
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("myDomain", "src/test/resources/repository2/folderWithJars", null );
+ }
+
+ public void testInvoke() throws Exception {
+ CalculatorService service = domain.getService(CalculatorService.class, "CalculatorServiceComponent");
+ assertEquals(3.0, service.add(1, 2));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionZIPTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionZIPTestCase.java
new file mode 100644
index 0000000000..98bbe3935a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/ContributionZIPTestCase.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import calculator.CalculatorService;
+
+
+
+/**
+ * Test SCADomain.newInstance and invocation of a service.
+ *
+ * @version $Rev: 608205 $ $Date: 2008-01-02 20:29:05 +0000 (Wed, 02 Jan 2008) $
+ */
+public class ContributionZIPTestCase extends TestCase {
+
+ private SCADomain domain;
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("myDomain", "src/test/resources/repository3/contribution.zip", null );
+ }
+
+ public void testInvoke() throws Exception {
+ CalculatorService service = domain.getService(CalculatorService.class, "CalculatorServiceComponent");
+ assertEquals(3.0, service.add(1, 2));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/calculator/CalculatorService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..a318cf50d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/java/calculator/CalculatorService.java
@@ -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;
+
+public interface CalculatorService {
+ double add(double n1, double n2);
+
+ double subtract(double n1, double n2);
+
+ double multiply(double n1, double n2);
+
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/Calculator.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/Calculator.composite
new file mode 100644
index 0000000000..ac88b2ac48
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/Calculator.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..8b60ae590c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/service.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/service.jar
new file mode 100644
index 0000000000..7e4a7132a3
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/service.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/serviceImpl.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/serviceImpl.jar
new file mode 100644
index 0000000000..0e16e11b0b
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository2/folderWithJars/serviceImpl.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository3/contribution.zip b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository3/contribution.zip
new file mode 100644
index 0000000000..b293aa4bcc
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-folder/src/test/resources/repository3/contribution.zip differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/pom.xml
new file mode 100644
index 0000000000..8d731c07d7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-export-composite
+ Apache Tuscany SCA iTest Contribution Export
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/Hello.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/Hello.java
new file mode 100644
index 0000000000..e65422136f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/Hello.java
@@ -0,0 +1,30 @@
+/*
+ * 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 hello;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the Hello service.
+ */
+@Remotable
+public interface Hello {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/HelloImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/HelloImpl.java
new file mode 100644
index 0000000000..5369c18497
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/java/hello/HelloImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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 hello;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(Hello.class)
+public class HelloImpl implements Hello {
+
+ public String getGreetings(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..3c14560a56
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/hello.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/hello.composite
new file mode 100644
index 0000000000..636b7111d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/main/resources/hello.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java
new file mode 100644
index 0000000000..72b77564d2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java
@@ -0,0 +1,91 @@
+/*
+ * 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.test.contribution;
+
+import hello.Hello;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class HelloTestCase extends TestCase {
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+
+ @Override
+ protected void setUp() throws Exception {
+ // Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ // Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ URL helloURL = getContributionURL(Hello.class);
+
+ // File helloContrib = new File("./target/classes/");
+ // URL helloURL = helloContrib.toURL();
+ Contribution consumerContribution =
+ contributionService.contribute("http://import-export/hello", helloURL, false);
+ Composite consumerComposite = consumerContribution.getDeployables().get(0);
+ domain.getDomainComposite().getIncludes().add(consumerComposite);
+ domain.buildComposite(consumerComposite);
+
+ // Start Components from my composite
+ domain.getCompositeActivator().activate(consumerComposite);
+ domain.getCompositeActivator().start(consumerComposite);
+ }
+
+ private URL getContributionURL(Class> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cls.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+ public void testHello() throws IOException {
+ Hello hello = domain.getService(Hello.class, "HelloServiceComponent");
+ assertNotNull(hello);
+ assertEquals(hello.getGreetings("lresende"), "Hello lresende");
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/pom.xml
new file mode 100644
index 0000000000..85c50da029
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-export-java
+ Apache Tuscany SCA iTest Contribution Java Export
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..74d22ed830
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/java/helloworld/HelloWorldService.java
@@ -0,0 +1,30 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@Remotable
+public interface HelloWorldService {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..dc33dfa560
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/helloworld/HelloWorldImpl.componentType b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/helloworld/HelloWorldImpl.componentType
new file mode 100644
index 0000000000..5a14b41650
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-java/src/main/resources/helloworld/HelloWorldImpl.componentType
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/pom.xml
new file mode 100644
index 0000000000..8d5eb73174
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/pom.xml
@@ -0,0 +1,31 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-export-resource
+ Apache Tuscany SCA iTest Contribution Resource Export
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..f11eacb416
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/ufservices/store.html b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/ufservices/store.html
new file mode 100644
index 0000000000..1ff281373a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-resource/src/main/resources/ufservices/store.html
@@ -0,0 +1,27 @@
+
+
+
+Store
+
+
+
+Sample Store Page
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/pom.xml
new file mode 100644
index 0000000000..1793d8e70a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/pom.xml
@@ -0,0 +1,31 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-export-wsdl
+ Apache Tuscany SCA iTest Contribution WSDL Export
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..b7394ec14b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.wsdl b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.wsdl
new file mode 100644
index 0000000000..9b31363e1a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.wsdl
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.xsd b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.xsd
new file mode 100644
index 0000000000..d3c83b08c6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.xsd
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/pom.xml
new file mode 100644
index 0000000000..35c0314f65
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-import-composite
+ Apache Tuscany SCA iTest Contribution Import
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-composite
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..966f56d7d5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldImpl.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 helloworld;
+
+import hello.Hello;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldImpl implements HelloWorldService {
+ @Reference
+ protected Hello helloServiceRef;
+
+ public String getGreetings(String name) {
+ return helloServiceRef.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldServer.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldServer.java
new file mode 100644
index 0000000000..3d43290380
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldServer.java
@@ -0,0 +1,46 @@
+/*
+ * 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 helloworld;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This server program shows how to create an SCA runtime, and start it which
+ * activates the helloworld Web service endpoint.
+ */
+public class HelloWorldServer {
+
+ public static void main(String[] args) {
+
+ SCADomain scaDomain = SCADomain.newInstance("helloworldws.composite");
+
+ try {
+ System.out.println("HelloWorld server started (press enter to shutdown)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ scaDomain.close();
+ System.out.println("HelloWorld server stopped");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..74d22ed830
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldService.java
@@ -0,0 +1,30 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@Remotable
+public interface HelloWorldService {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..9f3f5be452
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.wsdl b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.wsdl
new file mode 100644
index 0000000000..9b31363e1a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.wsdl
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.xsd b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.xsd
new file mode 100644
index 0000000000..d3c83b08c6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworld.xsd
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworldws.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworldws.composite
new file mode 100644
index 0000000000..e2f852ff7e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/main/resources/helloworldws.composite
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..1176a89143
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.java
@@ -0,0 +1,126 @@
+/*
+ * 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.test.contribution;
+
+import hello.Hello;
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class HelloWorldServerTestCase extends TestCase {
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution helloWorldContribution;
+ private Contribution compositeContribution;
+
+ @Override
+ protected void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ // File compositeContribLocation = new File("../export-composite/target/classes");
+ // URL compositeContribURL = compositeContribLocation.toURL();
+ URL compositeContribURL = getContributionURL(Hello.class);
+ compositeContribution =
+ contributionService.contribute("http://import-export/export-composite", compositeContribURL, false);
+ for (Composite deployable : compositeContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+// File helloWorldContribLocation = new File("./target/classes/");
+// URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ URL helloWorldContribURL = getContributionURL(HelloWorldService.class);
+ helloWorldContribution =
+ contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ private URL getContributionURL(Class> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cls.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+ public void testPing() throws IOException {
+ new Socket("127.0.0.1", 8085);
+ }
+
+ public void testServiceCall() throws IOException {
+ HelloWorldService helloWorldService =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ assertNotNull(helloWorldService);
+
+ assertEquals("Hello Smith", helloWorldService.getGreetings("Smith"));
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://import-export/helloworld");
+ contributionService.remove("http://import-export/export-composite");
+
+ //Stop Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ domain.stop();
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/pom.xml
new file mode 100644
index 0000000000..32befa7498
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-import-java
+ Apache Tuscany SCA iTest Contribution Java Import
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-java
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..4cdcc1fd0b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/java/helloworld/HelloWorldImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldImpl implements HelloWorldService {
+
+ public String getGreetings(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..224e2c4d79
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite
new file mode 100644
index 0000000000..9b650e4acc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..431988cc04
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
@@ -0,0 +1,127 @@
+/*
+ * 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.test.contribution;
+
+import helloworld.HelloWorldImpl;
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class HelloWorldServerTestCase extends TestCase {
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution helloWorldContribution;
+ private Contribution javaContribution;
+
+ @Override
+ protected void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ //File javaContribLocation = new File("../export-java/target/classes");
+ //URL javaContribURL = javaContribLocation.toURL();
+ URL javaContribURL = getContributionURL(HelloWorldService.class);
+ javaContribution = contributionService.contribute("http://import-export/export-java", javaContribURL, false);
+ for (Composite deployable : javaContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ //File helloWorldContribLocation = new File("./target/classes/");
+ //URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ URL helloWorldContribURL = getContributionURL(HelloWorldImpl.class);
+ helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ private URL getContributionURL(Class> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cls.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+ public void testPing() throws IOException {
+ HelloWorldService helloWorldService =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ assertNotNull(helloWorldService);
+ assertEquals("Hello test", helloWorldService.getGreetings("test"));
+ }
+
+ public void testServiceCall() throws IOException {
+ HelloWorldService helloWorldService =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ assertNotNull(helloWorldService);
+
+ assertEquals("Hello Smith", helloWorldService.getGreetings("Smith"));
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://import-export/helloworld");
+ contributionService.remove("http://import-export/export-java");
+
+ // Stop Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ domain.stop();
+
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/pom.xml
new file mode 100644
index 0000000000..214231ba18
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/pom.xml
@@ -0,0 +1,102 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-import-resource
+ Apache Tuscany SCA iTest Contribution Resource Import
+
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-resource
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-http
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-http-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-resource-runtime
+ 1.5.1
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-resource
+ 1.5.1
+ test
+
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..ac6d7becb3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/store.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/store.composite
new file mode 100644
index 0000000000..bb5a7b764f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/main/resources/store.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/test/java/org/apache/tuscany/sca/test/contribution/StoreTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/test/java/org/apache/tuscany/sca/test/contribution/StoreTestCase.java
new file mode 100644
index 0000000000..1b7542b7d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-resource/src/test/java/org/apache/tuscany/sca/test/contribution/StoreTestCase.java
@@ -0,0 +1,129 @@
+/*
+ * 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.test.contribution;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class StoreTestCase extends TestCase {
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution storeContribution;
+ private Contribution resourceContribution;
+
+ @Override
+ protected void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ URL javaContribURL = getContributionURL(cl, "ufservices/store.html");
+ resourceContribution = contributionService.contribute("http://import-export/export-resource", javaContribURL, false);
+ for (Composite deployable : resourceContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ URL storeContributionURL = getContributionURL(cl, "store.composite");
+
+ storeContribution =
+ contributionService.contribute("http://import-export/store", storeContributionURL, false);
+ for (Composite deployable : storeContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : storeContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void testPing() throws IOException {
+ new Socket("127.0.0.1", 8085);
+ }
+
+
+ @Override
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://import-export/store");
+ contributionService.remove("http://import-export/export-resource");
+
+ // Stop Components from my composite
+ for (Composite deployable : storeContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ domain.stop();
+
+ domain.close();
+ }
+
+
+ /**
+ * Utility methods
+ */
+
+
+ private URL getContributionURL(ClassLoader cl, Class> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cl.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+ private URL getContributionURL(ClassLoader cl, String uri) throws MalformedURLException {
+ URL url = cl.getResource(uri);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - uri.length());
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/pom.xml
new file mode 100644
index 0000000000..9b60834e53
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-import-wsdl
+ Apache Tuscany SCA iTest Contribution WSDL Import
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-wsdl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..4cdcc1fd0b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldImpl implements HelloWorldService {
+
+ public String getGreetings(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldServer.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldServer.java
new file mode 100644
index 0000000000..3d43290380
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldServer.java
@@ -0,0 +1,46 @@
+/*
+ * 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 helloworld;
+
+import java.io.IOException;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This server program shows how to create an SCA runtime, and start it which
+ * activates the helloworld Web service endpoint.
+ */
+public class HelloWorldServer {
+
+ public static void main(String[] args) {
+
+ SCADomain scaDomain = SCADomain.newInstance("helloworldws.composite");
+
+ try {
+ System.out.println("HelloWorld server started (press enter to shutdown)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ scaDomain.close();
+ System.out.println("HelloWorld server stopped");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..74d22ed830
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldService.java
@@ -0,0 +1,30 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@Remotable
+public interface HelloWorldService {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..d46fe0b57c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/helloworldws.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/helloworldws.composite
new file mode 100644
index 0000000000..5008a2ea5b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/main/resources/helloworldws.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..5c40606e50
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
@@ -0,0 +1,137 @@
+/*
+ * 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.test.contribution;
+
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.Socket;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * Tests that the helloworld server is available
+ */
+public class HelloWorldServerTestCase extends TestCase {
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution wsdlContribution;
+ private Contribution consumerContribution;
+
+ @Override
+ protected void setUp() throws Exception {
+ // Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ // File wsdlContribLocation = new File("../export-wsdl/target/classes");
+ // URL wsdlContribURL = wsdlContribLocation.toURL();
+ URL wsdlContribURL = getContributionURL(getClass().getClassLoader(), "helloworld.wsdl");
+ wsdlContribution = contributionService.contribute("http://import-export/export-wsdl", wsdlContribURL, false);
+ for (Composite deployable : wsdlContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ // File helloWorldContribLocation = new File("./target/classes/");
+ // URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ URL helloWorldContribURL = getContributionURL(HelloWorldService.class);
+ consumerContribution =
+ contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : consumerContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : consumerContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void testPing() throws IOException {
+ new Socket("127.0.0.1", 8085);
+ }
+
+ private URL getContributionURL(Class> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cls.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+ private URL getContributionURL(ClassLoader cl, String flag) throws MalformedURLException {
+ URL url = cl.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length());
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ // System.out.println(url);
+ return url;
+ }
+
+ public void testServiceCall() throws IOException {
+ HelloWorldService helloWorldService =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ assertNotNull(helloWorldService);
+
+ assertEquals("Hello Smith", helloWorldService.getGreetings("Smith"));
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://import-export/helloworld");
+ contributionService.remove("http://import-export/export-wsdl");
+
+ // Stop Components from my composite
+ for (Composite deployable : consumerContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ domain.stop();
+
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/pom.xml
new file mode 100644
index 0000000000..76fedfafc0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-import-export/pom.xml
@@ -0,0 +1,56 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-import-export
+ pom
+ Apache Tuscany SCA Contribution Import/Export Integration Tests
+
+
+ export-composite
+ export-java
+ export-resource
+ export-wsdl
+ import-composite
+ import-java
+ import-resource
+ import-wsdl
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/pom.xml
new file mode 100644
index 0000000000..123c776499
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/pom.xml
@@ -0,0 +1,103 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-30-ear-appcomp-contrib-implicit-war-appcomp
+ Apache Tuscany SCA iTest Contribution Java EE Samples 30
+ ear
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-00-jar-shared
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ 1.5.1
+ ejb
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ 1.5.1
+ war
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-ear-plugin
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-00-jar-shared
+ true
+ /
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ /
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ /
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/src/main/application/META-INF/application.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/src/main/application/META-INF/application.composite
new file mode 100644
index 0000000000..3b1555f567
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/src/main/application/META-INF/application.composite
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+ EJB
+
+
+
+
+
+
+
+
+ Java
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/pom.xml
new file mode 100644
index 0000000000..fe71740c9c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/pom.xml
@@ -0,0 +1,103 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit
+ Apache Tuscany SCA iTest Contribution Java EE Samples 29
+ ear
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-00-jar-shared
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-08-ejb-enhanced
+ 1.5.1
+ ejb
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-01-war-nonenhanced
+ 1.5.1
+ war
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-ear-plugin
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-00-jar-shared
+ true
+ /
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-08-ejb-enhanced
+ /
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-01-war-nonenhanced
+ /
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/application/META-INF/application.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/application/META-INF/application.composite
new file mode 100644
index 0000000000..b131d375b0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/application/META-INF/application.composite
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+ EJB
+
+
+
+
+
+
+
+
+
+ EJB
+
+
+
+
+
+
+
+
+
+
+
+
+ Java
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/resources/isthisignored.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/resources/isthisignored.composite
new file mode 100644
index 0000000000..90872041b0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-appcomp-contrib-implicit/src/main/resources/isthisignored.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-nonenhanced/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-nonenhanced/pom.xml
new file mode 100644
index 0000000000..94795ab129
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ear-nonenhanced/pom.xml
@@ -0,0 +1,90 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-13-ear-nonenhanced
+ Apache Tuscany SCA iTest Contribution Java EE Samples 13
+ ear
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-07-ejb-nonenhanced
+ 1.5.1
+ ejb
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-01-war-nonenhanced
+ 1.5.1
+ war
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-ear-plugin
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-07-ejb-nonenhanced
+ /
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-01-war-nonenhanced
+ /
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/pom.xml
new file mode 100644
index 0000000000..e7f7422a7d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/pom.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ Apache Tuscany SCA iTest Contribution Java EE Samples 12
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-annotation_1.0_spec
+ 1.1.1
+ provided
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-ejb-plugin
+
+ 3.0
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldServiceBean.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldServiceBean.java
new file mode 100644
index 0000000000..ad9003dc67
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldServiceBean.java
@@ -0,0 +1,40 @@
+/**
+ * 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 sample.ejb3;
+
+import javax.ejb.Stateless;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * HelloworldService EJB implementation with no SCA enhancement
+
+ */
+@Stateless
+public class HelloworldServiceBean implements HelloworldService {
+
+ @Reference
+ protected HelloworldService nextService;
+
+ public String getGreetings(String name) {
+ String greeting = "Hello " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/ejb-jar.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/ejb-jar.composite
new file mode 100644
index 0000000000..bcaa154913
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/ejb-jar.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/openejb-jar.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/openejb-jar.xml
new file mode 100644
index 0000000000..9a97cbd535
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-appcomp-contrib-implicit/src/main/resources/META-INF/openejb-jar.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ 1.0
+ jar
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/pom.xml
new file mode 100644
index 0000000000..10aa2d8127
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/pom.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-08-ejb-enhanced
+ Apache Tuscany SCA iTest Contribution Java EE Samples 08
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-annotation_1.0_spec
+ 1.1.1
+ provided
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-ejb-plugin
+
+ 3.0
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldLocal8.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldLocal8.java
new file mode 100644
index 0000000000..b5224a2319
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldLocal8.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Local;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Local
+public interface HelloworldLocal8 {
+ String getGreetingsLocal(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8.java
new file mode 100644
index 0000000000..e5e9fe6a82
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService8 {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8Bean.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8Bean.java
new file mode 100644
index 0000000000..a6d7f2dd04
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/java/sample/ejb3/HelloworldService8Bean.java
@@ -0,0 +1,50 @@
+/**
+ * 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 sample.ejb3;
+
+import javax.ejb.Stateless;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * HelloworldService EJB implementation SCA enhancement
+
+ */
+@Stateless
+public class HelloworldService8Bean implements HelloworldService8, HelloworldLocal8 {
+
+ @Reference
+ protected HelloworldService8 hwReference;
+
+ @Property
+ protected String hwProperty;
+
+ public String getGreetings(String name) {
+ String greeting = "Hello remote " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+ public String getGreetingsLocal(String name) {
+ String greeting = "Hello local " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/META-INF/openejb-jar.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/META-INF/openejb-jar.xml
new file mode 100644
index 0000000000..db36c4b140
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/META-INF/openejb-jar.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ itest-contribution-jee-samples-08-ejb-enhanced
+ 1.0
+ jar
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/isthisignored.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/isthisignored.composite
new file mode 100644
index 0000000000..90872041b0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-enhanced/src/main/resources/isthisignored.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/pom.xml
new file mode 100644
index 0000000000..506652388d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/pom.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-07-ejb-nonenhanced
+ Apache Tuscany SCA iTest Contribution Java EE Samples 07
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-annotation_1.0_spec
+ 1.1.1
+ provided
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-ejb-plugin
+
+ 3.0
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldLocal7.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldLocal7.java
new file mode 100644
index 0000000000..4df5cd37de
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldLocal7.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Local;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Local
+public interface HelloworldLocal7 {
+ String getGreetingsLocal(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7.java
new file mode 100644
index 0000000000..41ecddb62e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService7 {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7Bean.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7Bean.java
new file mode 100644
index 0000000000..403ead623c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7Bean.java
@@ -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 sample.ejb3;
+
+import javax.ejb.Stateless;
+
+/**
+ * HelloworldService EJB implementation with no SCA enhancement
+
+ */
+@Stateless
+public class HelloworldService7Bean implements HelloworldService7, HelloworldLocal7 {
+
+ public String getGreetings(String name) {
+ String greeting = "Hello remote " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+ public String getGreetingsLocal(String name) {
+ String greeting = "Hello local " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7aBean.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7aBean.java
new file mode 100644
index 0000000000..97242bff96
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/java/sample/ejb3/HelloworldService7aBean.java
@@ -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 sample.ejb3;
+
+import javax.ejb.Stateless;
+
+/**
+ * Another HelloworldService EJB implementation with no SCA enhancement
+ * A test for TUSCANY-3198
+ */
+@Stateless
+public class HelloworldService7aBean implements HelloworldService7, HelloworldLocal7 {
+
+ public String getGreetings(String name) {
+ String greeting = "Hello remote " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+ public String getGreetingsLocal(String name) {
+ String greeting = "Hello local " + name;
+ System.out.println(greeting);
+ return greeting;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/resources/META-INF/openejb-jar.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/resources/META-INF/openejb-jar.xml
new file mode 100644
index 0000000000..7428735903
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/ejb-nonenhanced/src/main/resources/META-INF/openejb-jar.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ test
+ itest-contribution-jee-samples-7-ejb-nonenhanced
+ 1.0
+ jar
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/pom.xml
new file mode 100644
index 0000000000..0e7836ceb1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/pom.xml
@@ -0,0 +1,72 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-00-jar-shared
+ Apache Tuscany SCA iTest Contribution Java EE Samples 00
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-annotation_1.0_spec
+ 1.1.1
+ provided
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.2
+
+
+
+ sample.java.JarMain
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJava.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJava.java
new file mode 100644
index 0000000000..5a08769550
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJava.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.java;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+public interface HelloworldServiceJava {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJavaImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJavaImpl.java
new file mode 100644
index 0000000000..265af5b3a0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/HelloworldServiceJavaImpl.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 sample.java;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+
+public class HelloworldServiceJavaImpl implements HelloworldServiceJava {
+
+ @Reference
+ protected HelloworldServiceJava hwReference;
+
+ @Property
+ protected String hwProperty;
+
+ public String getGreetings(String name) {
+ String greeting = hwReference.getGreetings(name) + " " + hwProperty;
+ System.out.println(greeting);
+ return greeting;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/JarMain.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/JarMain.java
new file mode 100644
index 0000000000..81793e47e6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/jar-shared/src/main/java/sample/java/JarMain.java
@@ -0,0 +1,24 @@
+/**
+ * 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 sample.java;
+
+public class JarMain {
+
+ public static void main(String[] args) {
+ System.out.println("JarMain called");
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/pom.xml
new file mode 100644
index 0000000000..6ab28e497d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/pom.xml
@@ -0,0 +1,59 @@
+
+
+
+ 4.0.0
+
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples
+ Apache Tuscany SCA iTest Contribution Java EE Samples
+
+ pom
+
+
+
+ default
+
+ true
+
+
+ jar-shared
+ war-nonenhanced
+ war-appcomp-contrib-implicit
+ ejb-nonenhanced
+ ejb-enhanced
+ ejb-appcomp-contrib-implicit
+ ear-nonenhanced
+ ear-appcomp-contrib-implicit
+ ear-appcomp-contrib-implicit-war-appcomp
+ scajar-ear-nonenhanced
+ scajar-ear-appcomp
+ scajar-ear-appcomp-war-appcomp
+ scazip-ejb-appcomp
+ scazip-war-appcomp
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/pom.xml
new file mode 100644
index 0000000000..302a758784
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/pom.xml
@@ -0,0 +1,72 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-sca
+ 1.5.1
+ ../../pom.xml
+
+ itest-contribution-jee-samples-43-scajar-ear-appcomp-war-appcomp
+ Apache Tuscany SCA iTest Contribution Java EE Samples 43
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/java/HelloworldServiceJava.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/java/HelloworldServiceJava.java
new file mode 100644
index 0000000000..1fad282a75
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/java/HelloworldServiceJava.java
@@ -0,0 +1,28 @@
+/*
+ * 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 sample.java;
+
+import org.osoa.sca.annotations.Remotable;
+
+
+@Remotable
+public interface HelloworldServiceJava {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2.java
new file mode 100644
index 0000000000..8adb6a5995
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2.java
@@ -0,0 +1,25 @@
+/*
+ * 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 sample.pojo;
+
+public interface HelloworldClient2 {
+
+ String getGreetings(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java
new file mode 100644
index 0000000000..ae16263505
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java
@@ -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.
+ */
+package sample.pojo;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+import sample.java.HelloworldServiceJava;
+
+public class HelloworldClient2Impl implements HelloworldClient2 {
+
+ @Reference
+ protected HelloworldService hwService;
+
+ @Reference
+ protected HelloworldServiceJava hwJavaService;
+
+ public String getGreetings(String name){
+ //return hwService.getGreetings(name) + hwJavaService.getGreetings(name);
+ return hwJavaService.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.java
new file mode 100644
index 0000000000..05885cead7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.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 sample.pojo;
+
+import sample.java.HelloworldServiceJava;
+
+public class HelloworldTargetImpl implements HelloworldServiceJava {
+
+ public String getGreetings(String name){
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/resources/helloworld.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..e9346fb2bb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp-war-appcomp/src/main/resources/helloworld.composite
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/pom.xml
new file mode 100644
index 0000000000..718a745068
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/pom.xml
@@ -0,0 +1,72 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-sca
+ 1.5.1
+ ../../pom.xml
+
+ itest-contribution-jee-samples-41-scajar-ear-appcomp
+ Apache Tuscany SCA iTest Contribution Java EE Samples 41
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/java/HelloworldServiceJava.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/java/HelloworldServiceJava.java
new file mode 100644
index 0000000000..1fad282a75
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/java/HelloworldServiceJava.java
@@ -0,0 +1,28 @@
+/*
+ * 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 sample.java;
+
+import org.osoa.sca.annotations.Remotable;
+
+
+@Remotable
+public interface HelloworldServiceJava {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2.java
new file mode 100644
index 0000000000..8adb6a5995
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2.java
@@ -0,0 +1,25 @@
+/*
+ * 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 sample.pojo;
+
+public interface HelloworldClient2 {
+
+ String getGreetings(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java
new file mode 100644
index 0000000000..ae16263505
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldClient2Impl.java
@@ -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.
+ */
+package sample.pojo;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+import sample.java.HelloworldServiceJava;
+
+public class HelloworldClient2Impl implements HelloworldClient2 {
+
+ @Reference
+ protected HelloworldService hwService;
+
+ @Reference
+ protected HelloworldServiceJava hwJavaService;
+
+ public String getGreetings(String name){
+ //return hwService.getGreetings(name) + hwJavaService.getGreetings(name);
+ return hwJavaService.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.java
new file mode 100644
index 0000000000..05885cead7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/java/sample/pojo/HelloworldTargetImpl.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 sample.pojo;
+
+import sample.java.HelloworldServiceJava;
+
+public class HelloworldTargetImpl implements HelloworldServiceJava {
+
+ public String getGreetings(String name){
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/resources/helloworld.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..ebd8377725
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-appcomp/src/main/resources/helloworld.composite
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/pom.xml
new file mode 100644
index 0000000000..c29d0c58ce
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/pom.xml
@@ -0,0 +1,72 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-sca
+ 1.5.1
+ ../../pom.xml
+
+ itest-contribution-jee-samples-35-scajar-ear-nonenhanced
+ Apache Tuscany SCA iTest Contribution Java EE Samples 35
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClient.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClient.java
new file mode 100644
index 0000000000..6f37c9b272
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClient.java
@@ -0,0 +1,25 @@
+/*
+ * 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 sample.pojo;
+
+public interface HelloworldClient {
+
+ String getGreetings(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClientImpl.java
new file mode 100644
index 0000000000..a38c4a773f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/java/sample/pojo/HelloworldClientImpl.java
@@ -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 sample.pojo;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+
+public class HelloworldClientImpl implements HelloworldClient {
+
+ @Reference
+ protected HelloworldService hwService;
+
+ public String getGreetings(String name){
+ return hwService.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/resources/helloworld.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..79c9dd3243
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scajar-ear-nonenhanced/src/main/resources/helloworld.composite
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/build.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/build.xml
new file mode 100644
index 0000000000..bdbe79a46d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/build.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/pom.xml
new file mode 100644
index 0000000000..67241cc12e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/pom.xml
@@ -0,0 +1,135 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-sca
+ 1.5.1
+ ../../pom.xml
+
+ itest-contribution-jee-samples-10-scazip-ejb-appcomp
+ Apache Tuscany SCA iTest Contribution Java EE Samples 10
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ 1.5.1
+ ejb
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ generate-sources
+
+ copy
+
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ ${project.version}
+ true
+ ${project.build.directory}/classes
+
+
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.3
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ copy-jar-to-zip
+ verify
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClient.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClient.java
new file mode 100644
index 0000000000..6f37c9b272
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClient.java
@@ -0,0 +1,25 @@
+/*
+ * 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 sample.pojo;
+
+public interface HelloworldClient {
+
+ String getGreetings(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java
new file mode 100644
index 0000000000..a38c4a773f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java
@@ -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 sample.pojo;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+
+public class HelloworldClientImpl implements HelloworldClient {
+
+ @Reference
+ protected HelloworldService hwService;
+
+ public String getGreetings(String name){
+ return hwService.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/resources/helloworld.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..909b8a1484
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-ejb-appcomp/src/main/resources/helloworld.composite
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/build.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/build.xml
new file mode 100644
index 0000000000..bdbe79a46d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/build.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/pom.xml
new file mode 100644
index 0000000000..f88d68876d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/pom.xml
@@ -0,0 +1,136 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-sca
+ 1.5.1
+ ../../pom.xml
+
+ itest-contribution-jee-samples-04-scazip-war-appcomp
+ Apache Tuscany SCA iTest Contribution Java EE Samples 04
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ 1.5.1
+ war
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+ ${artifactId}
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ generate-sources
+
+ copy
+
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ ${project.version}
+ war
+ true
+ ${project.build.directory}/classes
+
+
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.3
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ copy-jar-to-zip
+ verify
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClient.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClient.java
new file mode 100644
index 0000000000..6f37c9b272
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClient.java
@@ -0,0 +1,25 @@
+/*
+ * 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 sample.pojo;
+
+public interface HelloworldClient {
+
+ String getGreetings(String name);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java
new file mode 100644
index 0000000000..a38c4a773f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/java/sample/pojo/HelloworldClientImpl.java
@@ -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 sample.pojo;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+
+public class HelloworldClientImpl implements HelloworldClient {
+
+ @Reference
+ protected HelloworldService hwService;
+
+ public String getGreetings(String name){
+ return hwService.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/resources/helloworld.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..eaa567595e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/scazip-war-appcomp/src/main/resources/helloworld.composite
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/pom.xml
new file mode 100644
index 0000000000..f5295b7388
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/pom.xml
@@ -0,0 +1,66 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ Apache Tuscany SCA iTest Contribution Java EE Samples 06
+ war
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/HelloworldEjbServlet.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/HelloworldEjbServlet.java
new file mode 100644
index 0000000000..ae8613f8db
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/HelloworldEjbServlet.java
@@ -0,0 +1,66 @@
+/*
+ * 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 sample;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.ejb.EJB;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+
+/**
+ * A servlet that invokes HelloworldService which is an SCA enhanced stateless EJB.
+ *
+ * @version $Rev$ $Date$
+ */
+public class HelloworldEjbServlet extends HttpServlet {
+ private static final long serialVersionUID = -4448818871934180718L;
+
+ @EJB
+ private HelloworldService service;
+
+ @Reference
+ protected HelloworldService helloworldSca;
+
+ @Override
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ String name = request.getParameter("name");
+ String greeting = service.getGreetings(name);
+ String greeting2 = helloworldSca.getGreetings(name.toUpperCase());
+
+ Writer out = response.getWriter();
+ out.write("Apache Tuscany Helloworld Web Sample ");
+ out.write("Apache Tuscany Helloworld Web Sample ");
+ out.write("This page displays the response got from HelloworldServiceBean, which is a Stateless EJB.");
+ out.write(" Parameter sent to HelloworldService.getGreeting: "+name);
+ out.write(greeting);
+ out.write("The following is got by invoking the HelloworldService SCA service provided by the HelloworldServiceBean");
+ out.write(" Parameter sent to HelloworldService.getGreeting: "+name.toUpperCase());
+ out.write(greeting2);
+ out.write("");
+ out.flush();
+ out.close();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/geronimo-web.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/geronimo-web.xml
new file mode 100644
index 0000000000..2563c8b7c8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/geronimo-web.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+ test
+ helloworld-web
+ 1.0
+ car
+
+
+
+ test
+ helloworld-ejb
+ 1.0
+ jar
+
+
+
+
+
+ helloworld-web
+
+ ejb/HelloworldServiceBean
+
+ test
+ helloworld-ejb
+ 1.0
+ HelloworldServiceBean
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.composite
new file mode 100644
index 0000000000..823085e81f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.composite
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..628588a974
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Helloworld Web Sample
+
+
+ HelloworldEjbServlet
+ sample.HelloworldEjbServlet
+
+
+
+ HelloworldEjbServlet
+ /HelloworldEjbServlet
+
+
+
+ hello.html
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/hello.html b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/hello.html
new file mode 100644
index 0000000000..69473543c9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-appcomp-contrib-implicit/src/main/webapp/hello.html
@@ -0,0 +1,50 @@
+
+
+
+
+Apache Tuscany Helloworld Web Sample
+
+
+
+
+Apache Tuscany Helloworld Web Sample
+
+This web page posts the data to HelloworldEjbServlet . The servlet invokes HelloworldServiceBean , which is a Stateless EJB.
+The EJB in turn invokes Helloworld SCA service through proxies injected into EJB fields.
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/pom.xml
new file mode 100644
index 0000000000..aa14813a14
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/pom.xml
@@ -0,0 +1,66 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples
+ 1.5.1
+ ../pom.xml
+
+
+ itest-contribution-jee-samples-01-war-nonenhanced
+ Apache Tuscany SCA iTest Contribution Java EE Samples 01
+ war
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.5.1
+ provided
+
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ provided
+
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+
+
+ ${artifactId}
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/HelloworldEjbServlet.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/HelloworldEjbServlet.java
new file mode 100644
index 0000000000..71055bbdfe
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/HelloworldEjbServlet.java
@@ -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 sample;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.ejb.EJB;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osoa.sca.annotations.Reference;
+
+import sample.ejb3.HelloworldService;
+
+/**
+ * A servlet that invokes HelloworldService which is an SCA enhanced stateless EJB.
+ *
+ * @version $Rev$ $Date$
+ */
+public class HelloworldEjbServlet extends HttpServlet {
+ private static final long serialVersionUID = -4448818871934180718L;
+
+ @EJB
+ private HelloworldService service;
+
+ @Override
+ protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ String name = request.getParameter("name");
+ String greeting = service.getGreetings(name);
+ //String greeting2 = helloworldSca.getGreetings(name.toUpperCase());
+
+ Writer out = response.getWriter();
+ out.write("Apache Tuscany Helloworld Web Sample ");
+ out.write("Apache Tuscany Helloworld Web Sample ");
+ out.write("This page displays the response got from HelloworldServiceBean, which is a Stateless EJB.");
+ out.write(" Parameter sent to HelloworldService.getGreeting: "+name);
+ out.write(greeting);
+ out.write("The following is got by invoking the HelloworldService SCA service provided by the HelloworldServiceBean");
+ out.write(" Parameter sent to HelloworldService.getGreeting: "+name.toUpperCase());
+ //out.write(greeting2);
+ out.write("");
+ out.flush();
+ out.close();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java
new file mode 100644
index 0000000000..0194d1870c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/java/sample/ejb3/HelloworldService.java
@@ -0,0 +1,33 @@
+/*
+ * 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 sample.ejb3;
+
+import javax.ejb.Remote;
+
+/**
+ * HelloworldService EJB interface.
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remote
+public interface HelloworldService {
+ String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/geronimo-web.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/geronimo-web.xml
new file mode 100644
index 0000000000..2563c8b7c8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/geronimo-web.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+ test
+ helloworld-web
+ 1.0
+ car
+
+
+
+ test
+ helloworld-ejb
+ 1.0
+ jar
+
+
+
+
+
+ helloworld-web
+
+ ejb/HelloworldServiceBean
+
+ test
+ helloworld-ejb
+ 1.0
+ HelloworldServiceBean
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/web.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..628588a974
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Helloworld Web Sample
+
+
+ HelloworldEjbServlet
+ sample.HelloworldEjbServlet
+
+
+
+ HelloworldEjbServlet
+ /HelloworldEjbServlet
+
+
+
+ hello.html
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/hello.html b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/hello.html
new file mode 100644
index 0000000000..69473543c9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee-samples/war-nonenhanced/src/main/webapp/hello.html
@@ -0,0 +1,50 @@
+
+
+
+
+Apache Tuscany Helloworld Web Sample
+
+
+
+
+Apache Tuscany Helloworld Web Sample
+
+This web page posts the data to HelloworldEjbServlet . The servlet invokes HelloworldServiceBean , which is a Stateless EJB.
+The EJB in turn invokes Helloworld SCA service through proxies injected into EJB fields.
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/pom.xml
new file mode 100644
index 0000000000..7f245e2da5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/pom.xml
@@ -0,0 +1,183 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-jee
+ Apache Tuscany SCA iTest Contribution Java EE
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-jee-impl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-webapp
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-ejb
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-jee
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-web-runtime
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+
+
+
+ org.apache.myfaces.core
+ myfaces-api
+ 1.2.3
+
+
+
+ org.apache.myfaces.core
+ myfaces-impl
+ 1.2.3
+
+
+
+ org.apache.geronimo.specs
+ geronimo-jsp_2.1_spec
+ 1.0.1
+
+
+
+ org.apache.geronimo.specs
+ geronimo-el_1.0_spec
+ 1.0.1
+
+
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-01-war-nonenhanced
+ 1.5.1
+ war
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-06-war-appcomp-contrib-implicit
+ 1.5.1
+ war
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-07-ejb-nonenhanced
+ 1.5.1
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-08-ejb-enhanced
+ 1.5.1
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit
+ 1.5.1
+ ejb
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-13-ear-nonenhanced
+ 1.5.1
+ ear
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit
+ 1.5.1
+ ear
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-35-scajar-ear-nonenhanced
+ 1.5.1
+ jar
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-jee-samples-41-scajar-ear-appcomp
+ 1.5.1
+ jar
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProvider.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProvider.java
new file mode 100644
index 0000000000..e7e1d90797
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProvider.java
@@ -0,0 +1,48 @@
+/*
+ * 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.test.contribution.jee;
+
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.provider.ImplementationProvider;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentService;
+
+
+class TestEJBImplementationProvider implements ImplementationProvider {
+
+ TestEJBImplementationProvider(RuntimeComponent component, EJBImplementation ejbImplementation) {
+ }
+
+ public Invoker createInvoker(RuntimeComponentService service, Operation operation) {
+ return null;
+ }
+
+ public boolean supportsOneWayInvocation() {
+ return false;
+ }
+
+ public void start() {
+ }
+
+ public void stop() {
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProviderFactory.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProviderFactory.java
new file mode 100644
index 0000000000..4660fee7fd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestEJBImplementationProviderFactory.java
@@ -0,0 +1,47 @@
+/*
+ * 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.test.contribution.jee;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.provider.ImplementationProvider;
+import org.apache.tuscany.sca.provider.ImplementationProviderFactory;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+
+/**
+ * A factory for resource implementation providers.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TestEJBImplementationProviderFactory implements ImplementationProviderFactory {
+
+ /**
+ * Constructs a resource implementation.
+ */
+ public TestEJBImplementationProviderFactory(ExtensionPointRegistry extensionPoints) {
+ }
+
+ public ImplementationProvider createImplementationProvider(RuntimeComponent component, EJBImplementation implementation) {
+ return new TestEJBImplementationProvider(component, implementation);
+ }
+
+ public Class getModelType() {
+ return EJBImplementation.class;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java
new file mode 100644
index 0000000000..34bf3702d3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/java/org/apache/tuscany/sca/test/contribution/jee/TestExternalEarModelResolver.java
@@ -0,0 +1,141 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+public class TestExternalEarModelResolver implements ModelResolver {
+
+ private Map map = new HashMap();
+ private JavaEEIntrospector jeeIntrospector;
+ private ContributionService contributionService;
+
+
+ public TestExternalEarModelResolver(Contribution contribution, ExtensionPointRegistry extensionPoints) {
+ jeeIntrospector = extensionPoints.getExtensionPoint(JavaEEIntrospector.class);
+ UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class);
+ contributionService = utilities.getUtility(ContributionService.class);
+
+ }
+
+ public void addModel(Object resolved) {
+ ExternalEarInfo jeeApp = (ExternalEarInfo)resolved;
+ map.put(jeeApp.getAppInfo().getUri(), jeeApp);
+ }
+
+ public Object removeModel(Object resolved) {
+ return map.remove(((ExternalEarInfo)resolved).getAppInfo().getUri());
+ }
+
+ public T resolveModel(final Class modelClass, T unresolved) {
+ URI uri = ((ExternalEarInfo)unresolved).getAppInfo().getUri();
+ if (uri != null) {
+ ExternalEarInfo resolved = (ExternalEarInfo) map.get(uri);
+ if (resolved != null) {
+ return modelClass.cast(resolved);
+ } else {
+ // if you don't care about application composites you can
+ // simply read the EAR directly
+ /*
+ try {
+ File f = new File(uri.toString());
+ final JavaEEApplicationInfo o = jeeIntrospector.introspectJeeArchive(f.toURI().toURL());
+ return (T)new ExternalEarInfo() {
+ public JavaEEApplicationInfo getAppInfo() {
+ return (JavaEEApplicationInfo)o;
+ }
+ };
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ */
+
+ // if you do care about the application composite you
+ // need to process the ear as a contribution
+ try{
+ // find the location of the ear using a very specific algorithm
+ URL earLocation = null;
+ if ( uri.toString().equals("itest-contribution-jee-samples-13-ear-nonenhanced.ear")){
+ earLocation = new File("../contribution-jee-samples/ear-nonenhanced/target/itest-contribution-jee-samples-13-ear-nonenhanced.ear").toURL();
+ } else if ( uri.toString().equals("itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit.ear")){
+ earLocation = new File("../contribution-jee-samples/ear-appcomp-contrib-implicit/target/itest-contribution-jee-samples-29-ear-appcomp-contrib-implicit.ear").toURL();
+ } else if ( uri.toString().equals("itest-contribution-jee-samples-30-ear-appcomp-contrib-implicit-war-appcomp.ear")){
+ earLocation = new File("../contribution-jee-samples/ear-appcomp-contrib-implicit-war-appcomp/target/itest-contribution-jee-samples-30-ear-appcomp-contrib-implicit-war-appcomp.ear").toURL();
+ } else {
+ return unresolved;
+ }
+
+ // if you do care about application composites we have
+ // to process the EAR as a contribution
+ Contribution contribution = contributionService.contribute(uri.toString(), earLocation, false);
+
+ JavaEEApplicationInfo appInfo = null;
+ Composite appComposite = null;
+
+ // get the ear info
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof JavaEEApplicationInfo){
+ appInfo = (JavaEEApplicationInfo)artifact.getModel();
+ }
+
+ if (artifact.getURI().equals("META-INF/application.composite")){
+ appComposite = (Composite)artifact.getModel();
+ }
+ }
+
+
+ final JavaEEApplicationInfo returnAppInfo = appInfo;
+ final Composite returnAppComposite = appComposite;
+
+ return (T)new ExternalEarInfo() {
+ public JavaEEApplicationInfo getAppInfo() {
+ return returnAppInfo;
+ }
+ public Composite getAppComposite() {
+ return returnAppComposite;
+ }
+ };
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ return unresolved;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
new file mode 100644
index 0000000000..a39171507c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.resolver.ModelResolver
@@ -0,0 +1,18 @@
+# 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.
+
+org.apache.tuscany.sca.test.contribution.jee.TestExternalEarModelResolver;model=org.apache.tuscany.sca.contribution.jee.ExternalEarInfo
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
new file mode 100644
index 0000000000..adc93d9015
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
@@ -0,0 +1,19 @@
+# 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.
+
+# Implementation class for the implementation extension
+org.apache.tuscany.sca.test.contribution.jee.TestEJBImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.ejb.EJBImplementation
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java
new file mode 100644
index 0000000000..b81f67c287
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/ContributionServiceTestCase.java
@@ -0,0 +1,329 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * This is an integration test for Java EE contribution processing. *
+ *
+ * @version $Rev$ $Date$
+ */
+
+public class ContributionServiceTestCase {
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+ private static final String CONTRIBUTION_002_ID = "contribution002/";
+ private static final String JAR_CONTRIBUTION = "/repository/helloworld-service.jar";
+ private static final String EJB_JAR_CONTRIBUTION = "/repository/helloworld-ejb.jar";
+ private static final String EJB_JAR_W_DEPLOYABLE_CONTRIBUTION = "/repository/helloworld-ejb-w-dep.jar";
+ private static final String WAR_CONTRIBUTION = "/repository/helloworld-web.war";
+ private static final String WAR_W_DEPLOYABLE_CONTRIBUTION = "/repository/helloworld-web-w-dep.war";
+ private static final String EAR_CONTRIBUTION = "/repository/helloworld-ejb.ear";
+ private static final String EAR_NONENHANCED_CONTRIBUTION = "/repository/simple-app-ear.jar";
+ private static final String EAR_ENHANCED_16_CONTRIBUTION = "/repository/simple-app.ear";
+ private static final String EAR_ENHANCED_19_CONTRIBUTION = "/repository/enhanced-app.ear";
+
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * This method tests a non Java EE contribution.
+ */
+ @Test
+ public void testContributeJAR() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * This method tests an EJB jar as a contribution.
+ */
+ @Test
+ public void testContributeEJBJAR() throws Exception {
+ URL contributionLocation = getClass().getResource(EJB_JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/ejb-jar.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+ }
+ }
+
+ /**
+ * This method tests an EJB jar with sca-contribution.xml as a contribution.
+ */
+ @Test
+ public void testContributeEJBJARwDeployable() throws Exception {
+ URL contributionLocation = getClass().getResource(EJB_JAR_W_DEPLOYABLE_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/ejb-jar.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+ }
+
+ List deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.ejb", component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation) component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Service service = ejbImpl.getServices().get(0);
+ Assert.assertEquals("Service name", "HelloworldService", service.getName());
+ }
+
+ /**
+ * This method tests WAR as a contribution.
+ */
+ @Test
+ public void testContributeWAR() throws Exception {
+ URL contributionLocation = getClass().getResource(WAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("WEB-INF/web.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List referenceNames = new ArrayList();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+ }
+ }
+
+ /**
+ * This method tests WAR with sca-contribution.xml as a contribution.
+ */
+ @Test
+ public void testContributeWARwDeployable() throws Exception {
+ URL contributionLocation = getClass().getResource(WAR_W_DEPLOYABLE_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+
+ Contribution contribution = contributionService.getContribution(contributionId);
+ List artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("WEB-INF/web.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List referenceNames = new ArrayList();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+ }
+
+ List deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.web", component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation) component.getImplementation();
+ Assert.assertEquals("Number of reference", 2, webImpl.getReferences().size());
+ List referenceNames = new ArrayList();
+ referenceNames.add("name1");
+ referenceNames.add("sample.HelloworldEjbServlet_service");
+ for(Reference ref : webImpl.getReferences()) {
+ Assert.assertTrue(referenceNames.contains(ref.getName()));
+ }
+ }
+
+ /**
+ * This method test EAR as a contribution.
+ */
+ @Test
+ public void testContributeEAR() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * This method tests a JAR containing an EAR as a contribution.
+ * non-enhanced EAR containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Ignore
+ @Test
+ public void testContributeEAR_NonEnhanced() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_NONENHANCED_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+ List deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.jee", component.getImplementation() instanceof JEEImplementation);
+ JEEImplementation jeeImpl = (JEEImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 2, jeeImpl.getServices().size());
+ Assert.assertEquals("Number of references", 1, jeeImpl.getReferences().size());
+ }
+
+ /**
+ * This method tests an EAR as a contribution.
+ * Enhanced EAR containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Test
+ public void testContributeEAR_Enhanced16() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_ENHANCED_16_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+ List deployables = contribution.getDeployables();
+ Assert.assertEquals("Deployable composites", 1, deployables.size());
+ Composite composite = deployables.get(0);
+ Assert.assertEquals("Number of components", 1, composite.getComponents().size());
+ Component component = composite.getComponents().get(0);
+ Assert.assertTrue("Component with implementation.jee", component.getImplementation() instanceof JEEImplementation);
+ JEEImplementation jeeImpl = (JEEImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 2, jeeImpl.getServices().size());
+ // TODO - TUSCANY-3008
+ // Assert.assertEquals("Number of references", 1, jeeImpl.getReferences().size());
+ }
+
+ /**
+ * This method tests an EAR as a contribution.
+ * Enhanced EAR w application composite containing non-enhanced WAR, non-enhanced EJB JAR.
+ */
+ @Test
+ public void testContributeEAR_Enhanced19() throws Exception {
+ URL contributionLocation = getClass().getResource(EAR_ENHANCED_19_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ Contribution contribution = contributionService.getContribution(contributionId);
+ Assert.assertNotNull(contribution);
+
+ List artifacts = contribution.getArtifacts();
+ for(Artifact artifact : artifacts) {
+ if(artifact.getURI().toString().equals("META-INF/application.composite")) {
+ Composite composite = (Composite)artifact.getModel();
+ Assert.assertEquals("Number of components", 3, composite.getComponents().size());
+ for(Component component : composite.getComponents()) {
+ if(component.getName().equals("webComponent")) {
+ Assert.assertTrue(component.getImplementation() instanceof WebImplementation);
+ WebImplementation webImpl = (WebImplementation)component.getImplementation();
+ Assert.assertEquals("Number of references", 1, webImpl.getReferences().size());
+ } else if(component.getName().equals("ejbComponent1")) {
+ Assert.assertTrue(component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Assert.assertEquals("Number of references", 0, ejbImpl.getReferences().size());
+ } else if(component.getName().equals("ejbComponent2")) {
+ Assert.assertTrue(component.getImplementation() instanceof EJBImplementation);
+ EJBImplementation ejbImpl = (EJBImplementation)component.getImplementation();
+ Assert.assertEquals("Number of services", 1, ejbImpl.getServices().size());
+ Assert.assertEquals("Number of references", 1, ejbImpl.getReferences().size());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java
new file mode 100644
index 0000000000..4241b7928f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/EjbAppcompTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class EjbAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * EJB - It's an JEE EAR file that is a contribution
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testEjbAppcom() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/ejb-appcomp-contrib-implicit/target/itest-contribution-jee-samples-12-ejb-appcomp-contrib-implicit.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldService", composite.getComponents().get(0).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
new file mode 100644
index 0000000000..64c31b4393
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompTestCase.java
@@ -0,0 +1,124 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import sample.pojo.HelloworldClient2;
+
+
+public class SCAJarEarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testSCAJarEarAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-appcomp/target/itest-contribution-jee-samples-41-scajar-ear-appcomp.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ domain.getDomainComposite().getIncludes().add(composite);
+
+ Assert.assertEquals(3, composite.getComponents().size());
+ Assert.assertEquals(3, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("TheService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ domain.getCompositeActivator().activate(composite);
+ domain.getCompositeActivator().start(composite);
+
+ HelloworldClient2 client = domain.getService(HelloworldClient2.class, "HelloworldClientComponent");
+ Assert.assertEquals("Hello Fred Java", client.getGreetings("Fred"));
+
+ domain.stop();
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java
new file mode 100644
index 0000000000..9f50ea573c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarAppcompWarAppcompTestCase.java
@@ -0,0 +1,125 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import sample.pojo.HelloworldClient2;
+
+
+public class SCAJarEarAppcompWarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ * WAR - It has a WAR (and and EAR) in it
+ * appcomp - It has an application composite in it which should be ignored
+ */
+ @Test
+ public void testSCAJarEarAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-appcomp-war-appcomp/target/itest-contribution-jee-samples-43-scajar-ear-appcomp-war-appcomp.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ domain.getDomainComposite().getIncludes().add(composite);
+
+ Assert.assertEquals(3, composite.getComponents().size());
+ Assert.assertEquals(2, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("TheService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ domain.getCompositeActivator().activate(composite);
+ domain.getCompositeActivator().start(composite);
+
+ HelloworldClient2 client = domain.getService(HelloworldClient2.class, "HelloworldClientComponent");
+ Assert.assertEquals("Hello Fred Java", client.getGreetings("Fred"));
+
+ domain.stop();
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
new file mode 100644
index 0000000000..97e23d1bf7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAJarEarNonenhancedTestCase.java
@@ -0,0 +1,139 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAJarEarNonenhancedTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+ private static final String CONTRIBUTION_002_ID = "contribution002/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * nonenhanced - It has no SCA enhancements. Just a normal EAR
+ *
+ */
+ @Test
+ public void testSCAJarEarNonenhanced() throws Exception{
+ /* some thoughts about how to preprocess the ear
+ * as an alternative to relying on the model resolver
+ * to do contribution processing.
+
+ // Get some things from the extension registry that help us create the
+ // link between the contribution and the ear that it references
+ ExtensionPointRegistry registry = domain.getExtensionPointRegistry();
+ ModelResolverExtensionPoint modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
+ Class extends ModelResolver> externalEarModelResolver = modelResolvers.getResolver(ExternalEarInfo.class);
+
+ // locate the ear
+ URL earLocation = new File("../contribution-jee-samples/ear-nonenhanced/target/itest-contribution-jee-samples-13-ear-nonenhanced.ear").toURL();
+ contributionService.contribute(CONTRIBUTION_001_ID, earLocation, false);
+
+ // find the app info
+ for (Artifact artifact : contributionService.getContribution(CONTRIBUTION_001_ID).getArtifacts()){
+ if (artifact.getModel() instanceof JavaEEApplicationInfo){
+ // need to make this model available to the external ear model
+ // resolver. But how?
+ }
+ }
+ */
+
+ URL contributionLocation = new File("../contribution-jee-samples/scajar-ear-nonenhanced/target/itest-contribution-jee-samples-35-scajar-ear-nonenhanced.jar").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_002_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(2, composite.getComponents().size());
+ Assert.assertEquals(4, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldService7Bean_HelloworldService7", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java
new file mode 100644
index 0000000000..db4d9e5bf6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipEjbAppcompTestCase.java
@@ -0,0 +1,112 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAZipEjbAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAZIP - It's an SCA contribution in a ZIP with no nested archive
+ * but with a reference to an EJB Jar
+ * JAR
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testSCAZipEjbAppcomp() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scazip-ejb-appcomp/target/itest-contribution-jee-samples-10-scazip-ejb-appcomp.zip").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(2, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(1).getImplementation().getServices().size());
+ Assert.assertEquals("HelloworldServiceBean_HelloworldService", composite.getComponents().get(1).getImplementation().getServices().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java
new file mode 100644
index 0000000000..211f51c9bd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/SCAZipWarAppcompTestCase.java
@@ -0,0 +1,114 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class SCAZipWarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * SCAJAR - It's an SCA contribution in a JAR with no nested archives
+ * but which references a...
+ * EAR - It's an JEE EAR file
+ * appcomp - It has an application composite in it
+ *
+ */
+ // not picking up references correctly
+ @Ignore
+ @Test
+ public void testSCAJarEarNonenhanced() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/scazip-war-appcomp/target/itest-contribution-jee-samples-04-scazip-war-appcomp.zip").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getReferences().size());
+ Assert.assertEquals("????", composite.getComponents().get(0).getImplementation().getReferences().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java
new file mode 100644
index 0000000000..7696b64f9c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WARAppcompContribImplicitTestCase.java
@@ -0,0 +1,86 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class WARAppcompContribImplicitTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * WAR - It's a WAR
+ * Appcomp - It has an application composite
+ * Contrib - It's a contribution in it's own right
+ * Implicit - Composite deployment is implicit
+ *
+ */
+ @Test
+ public void testWARAppcompContribImplicit() throws Exception {
+ URL contributionLocation = new File("../contribution-jee-samples/war-appcomp-contrib-implicit/target/itest-contribution-jee-samples-06-war-appcomp-contrib-implicit.war").toURL();
+ contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+ Assert.assertNotNull(contributionService.getContribution(CONTRIBUTION_001_ID));
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java
new file mode 100644
index 0000000000..f54a4f98df
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/java/org/apache/tuscany/sca/test/contribution/jee/WarAppcompTestCase.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.contribution.jee;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.jee.ExternalEarInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEIntrospector;
+import org.apache.tuscany.sca.contribution.jee.impl.JavaEEApplicationInfoImpl;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.apache.tuscany.sca.implementation.ejb.EJBImplementation;
+import org.apache.tuscany.sca.implementation.jee.JEEImplementation;
+import org.apache.tuscany.sca.implementation.web.WebImplementation;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+public class WarAppcompTestCase {
+
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ @Before
+ public void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * EJB - It's an JEE EAR file that is a contribution
+ * appcomp - It has an application composite in it
+ *
+ */
+ @Test
+ public void testEjbAppcom() throws Exception {
+
+ URL contributionLocation = new File("../contribution-jee-samples/war-appcomp-contrib-implicit/target/itest-contribution-jee-samples-06-war-appcomp-contrib-implicit.war").toURL();
+ Contribution contribution = contributionService.contribute(CONTRIBUTION_001_ID, contributionLocation, false);
+
+ Assert.assertNotNull(contribution);
+
+ Composite composite = null;
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof Composite){
+ composite = (Composite) artifact.getModel();
+ }
+ }
+
+ Assert.assertNotNull(composite);
+
+ Assert.assertEquals(1, composite.getComponents().size());
+ Assert.assertEquals(1, composite.getComponents().get(0).getImplementation().getReferences().size());
+ Assert.assertEquals("helloworldSca", composite.getComponents().get(0).getImplementation().getReferences().get(0).getName());
+
+ domain.buildComposite(composite);
+
+ // assert that the build process has worked
+ Assert.assertNotNull(composite);
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/enhanced-app.ear b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/enhanced-app.ear
new file mode 100644
index 0000000000..11d2a029ec
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/enhanced-app.ear differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb-w-dep.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb-w-dep.jar
new file mode 100644
index 0000000000..a5b160c875
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb-w-dep.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.ear b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.ear
new file mode 100644
index 0000000000..9fb1ed9d14
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.ear differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.jar
new file mode 100644
index 0000000000..3a704137ed
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-ejb.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-service.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-service.jar
new file mode 100644
index 0000000000..228f4d27d7
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-service.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web-w-dep.war b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web-w-dep.war
new file mode 100644
index 0000000000..0b75db2745
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web-w-dep.war differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web.war b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web.war
new file mode 100644
index 0000000000..938ea75941
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/helloworld-web.war differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app-ear.jar b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app-ear.jar
new file mode 100644
index 0000000000..24f55a5f63
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app-ear.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app.ear b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app.ear
new file mode 100644
index 0000000000..c912e64237
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution-jee/src/test/resources/repository/simple-app.ear differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/pom.xml
new file mode 100644
index 0000000000..2dd332dcc2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution-multiple
+ Apache Tuscany SCA iTest Multiple Contribution
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/Hello.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/Hello.java
new file mode 100644
index 0000000000..7e574a7db3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/Hello.java
@@ -0,0 +1,27 @@
+/*
+ * 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 hello;
+
+/**
+ * This is the business interface of the Hello service.
+ */
+public interface Hello {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/HelloImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/HelloImpl.java
new file mode 100644
index 0000000000..ff9f6e75f3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/hello/HelloImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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 hello;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(Hello.class)
+public class HelloImpl implements Hello {
+
+ public String getGreetings(String name) {
+ return "Hello " + name;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..c062afaed0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldImpl.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 helloworld;
+
+import hello.Hello;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldImpl implements HelloWorldService {
+ @Reference
+ protected Hello helloServiceRef;
+
+ public String getGreetings(String name) {
+ return helloServiceRef.getGreetings(name);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..5251fc0a45
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.java
@@ -0,0 +1,28 @@
+/*
+ * 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 helloworld;
+
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+public interface HelloWorldService {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionCycleTestCaseFIXME.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionCycleTestCaseFIXME.java
new file mode 100644
index 0000000000..ec5123eb2d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionCycleTestCaseFIXME.java
@@ -0,0 +1,121 @@
+/*
+ * 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;
+
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+import junit.framework.TestCase;
+
+/**
+ * Test multiple contributions scenario
+ *
+ * FIXME This test case causes a StackOverflowException instead of
+ * reporting an error when a composite is not found, as there's a
+ * dependency cycle in the test contributions and the model resolvers
+ * do not handle import cycles properly.
+ *
+ */
+public class ContributionCycleTestCaseFIXME extends TestCase {
+
+ private String helloContribution_dir = "target/test-classes/contribution-cycle-export";
+ private String helloWorldContribution_one_dir = "target/test-classes/contribution-cycle-import";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution helloContribution;
+ private Contribution helloWorldContribution_one;
+
+ protected void setUp() throws Exception {
+ URL helloContribution_URL = new java.io.File(helloContribution_dir).toURI().toURL();
+ URL helloWorldContribution_one_URL = new java.io.File(helloWorldContribution_one_dir).toURI().toURL();
+
+ // Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ // Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ helloContribution =
+ contributionService.contribute("http://contribution-multiple/helloworld", helloContribution_URL, false);
+
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ helloWorldContribution_one =
+ contributionService.contribute("http://contribution-multiple/helloworld_one", helloWorldContribution_one_URL, false);
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ }
+
+ public void testServiceCall() throws IOException {
+ HelloWorldService helloWorldService_one =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent_one/HelloWorldService");
+ assertNotNull(helloWorldService_one);
+
+ assertEquals("Hello Smith", helloWorldService_one.getGreetings("Smith"));
+
+ }
+
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://contribution-multiple/helloworld");
+ contributionService.remove("http://contribution-multiple/helloworld_one");
+
+ // Stop Components from my composite
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ // domain.stop();
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionMultipleTestCaseFIXME.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionMultipleTestCaseFIXME.java
new file mode 100644
index 0000000000..133c98f357
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionMultipleTestCaseFIXME.java
@@ -0,0 +1,131 @@
+/*
+ * 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;
+
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+import junit.framework.TestCase;
+
+/**
+ * Test multiple contribution scenario
+ * Contributed by TUSCANY-1718
+ */
+public class ContributionMultipleTestCaseFIXME extends TestCase {
+
+ private String helloContribution_dir = "target/test-classes/contribution-export";
+ private String helloWorldContribution_one_dir = "target/test-classes/contribution-import-one";
+ private String helloWorldContribution_two_dir = "target/test-classes/contribution-import-two";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution helloContribution;
+ private Contribution helloWorldContribution_one;
+ private Contribution helloWorldContribution_two;
+
+ protected void setUp() throws Exception {
+ URL helloContribution_URL = new java.io.File(helloContribution_dir).toURI().toURL();
+ URL helloWorldContribution_one_URL = new java.io.File(helloWorldContribution_one_dir).toURI().toURL();
+ URL helloWorldContribution_two_URL = new java.io.File(helloWorldContribution_two_dir).toURI().toURL();
+
+ // Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ // Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ helloContribution =
+ contributionService.contribute("http://contribution-multiple/helloworld", helloContribution_URL, false);
+
+ helloWorldContribution_one =
+ contributionService.contribute("http://contribution-multiple/helloworld_one", helloWorldContribution_one_URL, false);
+
+ helloWorldContribution_two =
+ contributionService.contribute("http://contribution-multiple/helloworld_two", helloWorldContribution_two_URL, false);
+
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ }
+
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ }
+
+ for (Composite deployable : helloWorldContribution_two.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ }
+
+ domain.buildComposite(domain.getDomainComposite());
+ domain.getCompositeActivator().activate(domain.getDomainComposite());
+ domain.getCompositeActivator().start(domain.getDomainComposite());
+
+ }
+
+ public void testServiceCall() throws IOException {
+ HelloWorldService helloWorldService_one =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent_one/HelloWorldService");
+ assertNotNull(helloWorldService_one);
+
+ assertEquals("Hello Smith", helloWorldService_one.getGreetings("Smith"));
+
+ HelloWorldService helloWorldService_two =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent_two/HelloWorldService");
+ assertNotNull(helloWorldService_two);
+
+ assertEquals("Hello Smith", helloWorldService_two.getGreetings("Smith"));
+
+ }
+
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://contribution-multiple/helloworld");
+ contributionService.remove("http://contribution-multiple/helloworld_one");
+ contributionService.remove("http://contribution-multiple/helloworld_two");
+
+ // Stop Components from my composite
+ for (Composite deployable : helloWorldContribution_two.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ // domain.stop();
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java
new file mode 100644
index 0000000000..790b6fed98
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java
@@ -0,0 +1,145 @@
+/*
+ * 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;
+
+import helloworld.HelloWorldService;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+import junit.framework.TestCase;
+
+/**
+ * Test multiple contribution scenario
+ * Contributed by TUSCANY-1756
+ */
+public class ContributionTestCase extends TestCase {
+
+ private String helloContribution_dir = "target/test-classes/contribution-export";
+ //private String helloWorldContribution_one_dir = "target/test-classes/contribution-import-one";
+ private String helloWorldContribution_two_dir = "target/test-classes/contribution-import-two";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private Contribution helloContribution;
+ //private Contribution helloWorldContribution_one;
+ private Contribution helloWorldContribution_two;
+
+ protected void setUp() throws Exception {
+ URL helloContribution_URL = new java.io.File(helloContribution_dir).toURI().toURL();
+ //URL helloWorldContribution_one_URL = new java.io.File(helloWorldContribution_one_dir).toURI().toURL();
+ URL helloWorldContribution_two_URL = new java.io.File(helloWorldContribution_two_dir).toURI().toURL();
+
+ // Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ // Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ helloContribution =
+ contributionService.contribute("http://contribution-multiple/helloworld", helloContribution_URL, false);
+
+ //helloWorldContribution_one =
+ // contributionService.contribute("http://contribution-multiple/helloworld_one", helloWorldContribution_one_URL, false);
+
+ helloWorldContribution_two =
+ contributionService.contribute("http://contribution-multiple/helloworld_two", helloWorldContribution_two_URL, false);
+
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ //for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ // domain.getDomainComposite().getIncludes().add(deployable);
+ // domain.buildComposite(deployable);
+ //}
+
+ for (Composite deployable : helloWorldContribution_two.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ //for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ // domain.getCompositeActivator().activate(deployable);
+ // domain.getCompositeActivator().start(deployable);
+ //}
+
+ for (Composite deployable : helloWorldContribution_two.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ }
+
+ public void testServiceCall() throws IOException {
+ //HelloWorldService helloWorldService_one =
+ //domain.getService(HelloWorldService.class, "HelloWorldServiceComponent_one/HelloWorldService");
+ //assertNotNull(helloWorldService_one);
+
+ //assertEquals("Hello Smith", helloWorldService_one.getGreetings("Smith"));
+
+ HelloWorldService helloWorldService_two =
+ domain.getService(HelloWorldService.class, "HelloWorldServiceComponent_two/HelloWorldService");
+ assertNotNull(helloWorldService_two);
+
+ assertEquals("Hello Smith", helloWorldService_two.getGreetings("Smith"));
+
+ }
+
+ public void tearDown() throws Exception {
+ ContributionService contributionService = domain.getContributionService();
+
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("http://contribution-multiple/helloworld");
+ //contributionService.remove("http://contribution-multiple/helloworld_one");
+ contributionService.remove("http://contribution-multiple/helloworld_two");
+
+ // Stop Components from my composite
+ for (Composite deployable : helloWorldContribution_two.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ //for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ // domain.getCompositeActivator().stop(deployable);
+ // domain.getCompositeActivator().deactivate(deployable);
+ //}
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+ // domain.stop();
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..8b76783c3d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/hello.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/hello.composite
new file mode 100644
index 0000000000..aeeab337fa
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-export/hello.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..bfbf74373a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/helloworld_one.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/helloworld_one.composite
new file mode 100644
index 0000000000..7a8003577e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-cycle-import/helloworld_one.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..bea6f39932
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite
new file mode 100644
index 0000000000..aeeab337fa
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..bfbf74373a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/helloworld_one.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/helloworld_one.composite
new file mode 100644
index 0000000000..45cb504ea4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-one/helloworld_one.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..cbabdcd4fc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/helloworld_two.composite b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/helloworld_two.composite
new file mode 100644
index 0000000000..4c9225de34
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution-multiple/src/test/resources/contribution-import-two/helloworld_two.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/pom.xml b/tags/java/sca/1.5.1-RC2/itest/contribution/pom.xml
new file mode 100644
index 0000000000..e41db401dc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/pom.xml
@@ -0,0 +1,52 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-contribution
+ Apache Tuscany SCA iTest Contribution
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.5.1
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddService.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddService.java
new file mode 100644
index 0000000000..4e72f92fda
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddService.java
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+/**
+ * It is an Interface which has method declarations. Methods which are to be accessed as a service are declared in this
+ * interface. Implementation for these methods is provided in AddServiceImpl Class
+ */
+public interface AddService {
+
+ /**
+ * This is an add method which takes 2 parameters of double type and returns the sum of two parameters
+ */
+ double add(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddServiceImpl.java
new file mode 100644
index 0000000000..e9c635e3c8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/AddServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Add service
+ */
+public class AddServiceImpl implements AddService {
+
+ public double add(double n1, double n2) {
+ return n1 + n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorClient.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorClient.java
new file mode 100644
index 0000000000..719ad69eef
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorClient.java
@@ -0,0 +1,46 @@
+/*
+ * 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.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+public class CalculatorClient {
+ public static void main(String[] args) throws Exception {
+
+ SCADomain domain = SCADomain.newInstance("calculator/Calculator.composite");
+
+ CalculatorService calculatorService = domain.getService(CalculatorService.class,
+ "CalculatorServiceComponent");
+
+ // Calculate
+ System.out.println("3 + 2=" + calculatorService.add(3, 2));
+ System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+ System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+ System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+
+ domain.close();
+
+ }
+
+}
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorService.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..f288af0174
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorService.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+/**
+ * This is a Calculator service interface. All the methods which are to be accessed as a service are declared in this
+ * interface but not the implementation of those methods.
+ */
+public interface CalculatorService {
+
+ double add(double n1, double n2);
+
+ double subtract(double n1, double n2);
+
+ double multiply(double n1, double n2);
+
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorServiceImpl.java
new file mode 100644
index 0000000000..ae4ed12b7b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/CalculatorServiceImpl.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 calculator;
+
+import org.osoa.sca.annotations.Reference;
+
+
+/**
+ * An implementation of the Calculator service.
+ */
+public class CalculatorServiceImpl implements CalculatorService {
+
+ private AddService addService;
+ private SubtractService subtractService;
+ private MultiplyService multiplyService;
+ private DivideService divideService;
+
+ @Reference
+ public void setAddService(AddService addService) {
+ this.addService = addService;
+ }
+
+ @Reference
+ public void setSubtractService(SubtractService subtractService) {
+ this.subtractService = subtractService;
+ }
+
+ @Reference
+ public void setDivideService(DivideService divideService) {
+ this.divideService = divideService;
+ }
+
+ @Reference
+ public void setMultiplyService(MultiplyService multiplyService) {
+ this.multiplyService = multiplyService;
+ }
+
+ public double add(double n1, double n2) {
+ return addService.add(n1, n2);
+ }
+
+ public double subtract(double n1, double n2) {
+ return subtractService.subtract(n1, n2);
+ }
+
+ public double multiply(double n1, double n2) {
+ return multiplyService.multiply(n1, n2);
+ }
+
+ public double divide(double n1, double n2) {
+ return divideService.divide(n1, n2);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideService.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideService.java
new file mode 100644
index 0000000000..ad99418f5b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideService.java
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+/**
+ * This is an interface for Divide Service which has divide method declared which is implemented in DivideServiceImpl
+ * class
+ */
+public interface DivideService {
+
+ /**
+ * This is a divide method which takes 2 parameters of double type and returns the result of division
+ */
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideServiceImpl.java
new file mode 100644
index 0000000000..8c33862f6d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/DivideServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Divide service.
+ */
+public class DivideServiceImpl implements DivideService {
+
+ public double divide(double n1, double n2) {
+ return n1 / n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyService.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyService.java
new file mode 100644
index 0000000000..3987b0a54f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyService.java
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+/**
+ * This is an interface for Multiply Service which has multiply method declared which is implemented in
+ * MultiplyServiceImpl class
+ */
+public interface MultiplyService {
+
+ /**
+ * This is a multiply method which takes 2 parameters of double type and returns the result of multiplication of the
+ * two parameters
+ */
+ double multiply(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyServiceImpl.java
new file mode 100644
index 0000000000..c7fbc73c00
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/MultiplyServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the Multiply service.
+ */
+public class MultiplyServiceImpl implements MultiplyService {
+
+ public double multiply(double n1, double n2) {
+ return n1 * n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractService.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractService.java
new file mode 100644
index 0000000000..25e0ed6ca7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractService.java
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+/**
+ * This is an interface for Subtract Service which has subtract method declared which is implemented in
+ * SubtractServiceImpl class
+ */
+
+public interface SubtractService {
+
+ /**
+ * This is a subtract method which takes 2 parameters of double type and returns the result of subtraction.
+ */
+ double subtract(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractServiceImpl.java
new file mode 100644
index 0000000000..1a7f145ad8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/java/calculator/SubtractServiceImpl.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+/**
+ * An implementation of the subtract service.
+ */
+public class SubtractServiceImpl implements SubtractService {
+
+ public double subtract(double n1, double n2) {
+ return n1 - n2;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/ContributionTest.composite b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/ContributionTest.composite
new file mode 100644
index 0000000000..d814e439e2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/ContributionTest.composite
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/Calculator.composite b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/Calculator.composite
new file mode 100644
index 0000000000..657a2f95d8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/Calculator.composite
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/sca-contribution.xml
new file mode 100644
index 0000000000..e95796d83a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/main/resources/calculator/sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
new file mode 100644
index 0000000000..97b2e5d6ed
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
@@ -0,0 +1,218 @@
+/*
+ * 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.test.contribution;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.contribution.service.util.FileHelper;
+import org.apache.tuscany.sca.contribution.service.util.IOHelper;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/**
+ * This is more intended to be a integration test then a unit test. *
+ */
+public class ContributionServiceTestCase extends TestCase {
+ private static final String CONTRIBUTION_001_ID = "contribution001/";
+ private static final String CONTRIBUTION_002_ID = "contribution002/";
+ private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
+ private static final String FOLDER_CONTRIBUTION = "target/classes/";
+
+ private ClassLoader cl;
+ private EmbeddedSCADomain domain;
+ private ContributionService contributionService;
+
+ /**
+ * setUp() is a method in JUnit Frame Work which is executed before all others methods in the class extending
+ * unit.framework.TestCase. So this method is used to create a test Embedded SCA Domain, to start the SCA Domain and
+ * to get a reference to the contribution service
+ */
+
+ @Override
+ protected void setUp() throws Exception {
+ //Create a test embedded SCA domain
+ cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ //get a reference to the contribution service
+ contributionService = domain.getContributionService();
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contrututionId with the value retrieved from the SCA runtime.
+ */
+ public void testContributeJAR() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ //URL contributionLocation = new URL("file:/D:/dev/Opensource/Apache/Tuscany/source/java/sca/samples/calculator/target/sample-calculator.jar");
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, false);
+ assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contrututionId with the value retrieved from the SCA runtime using
+ * contributionService.
+ */
+ public void testStoreContributionPackageInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId, contributionLocation, true);
+
+ assertTrue(FileHelper.toFile(new URL(contributionService.getContribution(contributionId).getLocation()))
+ .exists());
+
+ assertNotNull(contributionId);
+
+ Contribution contributionModel = contributionService.getContribution(contributionId);
+
+ File contributionFile = FileHelper.toFile(new URL(contributionModel.getLocation()));
+ assertTrue(contributionFile.exists());
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contrututionId with the value retrieved from the SCA runtime using
+ * contributionService.
+ */
+ public void testStoreContributionStreamInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+
+ InputStream contributionStream = contributionLocation.openStream();
+ try {
+ contributionService.contribute(contributionId, contributionLocation, contributionStream);
+ } finally {
+ IOHelper.closeQuietly(contributionStream);
+ }
+
+ assertTrue(FileHelper.toFile(new URL(contributionService.getContribution(contributionId).getLocation()))
+ .exists());
+
+ assertNotNull(contributionId);
+
+ Contribution contributionModel = contributionService.getContribution(contributionId);
+
+ File contributionFile = FileHelper.toFile(new URL(contributionModel.getLocation()));
+ assertTrue(contributionFile.exists());
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contributionId1,contributionId2 with the value retrieved from the SCA
+ * runtime using contributionService.
+ */
+ public void testStoreDuplicatedContributionInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId1 = CONTRIBUTION_001_ID;
+ contributionService.contribute(contributionId1, contributionLocation, true);
+ assertNotNull(contributionService.getContribution(contributionId1));
+ String contributionId2 = CONTRIBUTION_002_ID;
+ contributionService.contribute(contributionId2, contributionLocation, true);
+ assertNotNull(contributionService.getContribution(contributionId2));
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contributionId with the value retrieved from the SCA runtime using
+ * contributionService.
+ */
+ public void testContributeFolder() throws Exception {
+ final File rootContributionFolder = new File(FOLDER_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ //first rename the sca-contribution metadata file
+ //File calculatorMetadataFile = new File("target/classes/calculator/sca-contribution.xml");
+ //File metadataDirectory = new File("target/classes/META-INF/");
+ //if (!metadataDirectory.exists()) {
+ // FileHelper.forceMkdir(metadataDirectory);
+ //}
+ //FileHelper.copyFileToDirectory(calculatorMetadataFile, metadataDirectory);
+
+ // Requires permission to read user.dir property. Requires PropertyPermision in security policy.
+ URL contributionFolderURL;
+ try {
+ contributionFolderURL = AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public URL run() throws IOException {
+ return rootContributionFolder.toURL();
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (IOException)e.getException();
+ }
+ contributionService.contribute(contributionId, contributionFolderURL, false);
+ assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ /**
+ * Method prefixed with 'test' is a test method where testing logic is written using various assert methods. This
+ * test verifies the string assigned to contributionId, artifactId with the value retrieved from the SCA runtime
+ * using contributionService.
+ */
+ public void testAddDeploymentComposites() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ Contribution contribution = contributionService.contribute(contributionId, contributionLocation, false);
+ assertNotNull(contributionService.getContribution(contributionId));
+
+ String artifactId = "contributionComposite.composite";
+ Composite composite = (new DefaultAssemblyFactory()).createComposite();
+ composite.setName(new QName(null, "contributionComposite"));
+ composite.setURI("contributionComposite.composite");
+
+ contributionService.addDeploymentComposite(contribution, composite);
+
+ List deployables = contributionService.getContribution(contributionId).getDeployables();
+ Composite composite1 = (Composite)deployables.get(deployables.size() - 1);
+ assertEquals("contributionComposite", composite1.getName().toString());
+
+ Artifact artifact = null;
+ contribution = contributionService.getContribution(contributionId);
+ String id = artifactId.toString();
+ for (Artifact a : contribution.getArtifacts()) {
+ if (id.equals(a.getURI())) {
+ artifact = a;
+ break;
+ }
+ }
+ Composite composite2 = (Composite)artifact.getModel();
+ assertEquals("contributionComposite", composite2.getName().toString());
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/deployables/sample-calculator.jar b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/deployables/sample-calculator.jar
new file mode 100644
index 0000000000..0ca3a1b781
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/deployables/sample-calculator.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/repository/sample-calculator.jar b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/repository/sample-calculator.jar
new file mode 100644
index 0000000000..0ca3a1b781
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/contribution/src/test/resources/repository/sample-calculator.jar differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/pom.xml b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/pom.xml
new file mode 100644
index 0000000000..3e79902b89
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/pom.xml
@@ -0,0 +1,60 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-conversations-ws
+ Apache Tuscany SCA iTest Conversations Over Web Services Binding
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-node-impl
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/BusinessException.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/BusinessException.java
new file mode 100644
index 0000000000..9cd88620e3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/BusinessException.java
@@ -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 org.apache.tuscany.sca.itest.conversational;
+
+public class BusinessException extends Exception {
+
+ private String message;
+
+ public BusinessException() {
+ super();
+ }
+
+ public BusinessException(String message) {
+ super(message);
+ setMessage(message);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java
new file mode 100644
index 0000000000..53dadc3dc7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.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 org.apache.tuscany.sca.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+
+@Conversational
+public interface ConversationIdService {
+
+ String getCIDField();
+ String getCIDSetter();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
new file mode 100644
index 0000000000..cb7a032e85
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
@@ -0,0 +1,50 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing conversational callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+public interface ConversationalCallback {
+
+ // public void init();
+
+ // public void destroy();
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws BusinessException;
+
+ @EndsConversation
+ public String endConversation();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
new file mode 100644
index 0000000000..2532346349
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
@@ -0,0 +1,50 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The client for the conversational itest. Is implemented by clients
+ * offering both stateless and stateful callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Remotable
+public interface ConversationalClient {
+
+ public int runConversationFromInjectedReference();
+ public int runConversationFromInjectedReference2();
+ public int runConversationFromServiceReference();
+ public int runConversationWithUserDefinedConversationId();
+ public String runConversationCheckUserDefinedConversationId();
+ public int runConversationCheckingScope();
+ public int runConversationWithCallback();
+ public int runConversationHavingPassedReference();
+ public String runConversationBusinessException();
+ public String runConversationBusinessExceptionCallback();
+ public int runConversationCallingEndedConversation();
+ public int runConversationCallingEndedConversationCallback();
+ public String runConversationCallingEndedConversationCheckConversationId();
+ public String runConversationCallingEndedConversationCallbackCheckConversationId();
+ public int runConversationAgeTimeout();
+ public int runConversationIdleTimeout();
+ public int runConversationPrincipleError();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java
new file mode 100644
index 0000000000..8f008fa711
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.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 org.apache.tuscany.sca.itest.conversational;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The client that calls into an existing conversation by accepting
+ * a reference to that conversation
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Remotable
+public interface ConversationalReferenceClient {
+
+ public void incrementCount(CallableReference conversationalService);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
new file mode 100644
index 0000000000..1e36ce6917
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
@@ -0,0 +1,58 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The service interface used when testing conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+@Callback(ConversationalCallback.class)
+public interface ConversationalService {
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ //public void businessException() throws BusinessException;
+
+ public void initializeCountCallback(int count);
+
+ public void incrementCountCallback();
+
+ public int retrieveCountCallback();
+
+ //public void businessExceptionCallback() throws BusinessException;
+
+ @EndsConversation
+ public String endConversation();
+
+ public String endConversationCallback();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java
new file mode 100644
index 0000000000..b4d3fe3d71
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java
@@ -0,0 +1,59 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The service interface used when testing conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+@Callback(NonConversationalCallback.class)
+public interface ConversationalServiceNonConversationalCallback {
+
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws BusinessException;
+
+ public void initializeCountCallback(int count);
+
+ public void incrementCountCallback();
+
+ public int retrieveCountCallback();
+
+ public void businessExceptionCallback() throws BusinessException;
+
+ @EndsConversation
+ public String endConversation();
+
+ public String endConversationCallback();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
new file mode 100644
index 0000000000..ed3a01c10b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
@@ -0,0 +1,42 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing conversational callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+public interface NonConversationalCallback {
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws BusinessException;
+
+ public String endConversation();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
new file mode 100644
index 0000000000..1603916cca
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
@@ -0,0 +1,76 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="1 seconds")
+public class ConversationAgeComponentImpl implements ConversationalService {
+
+ private int count;
+
+ public void businessException() throws BusinessException {
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ }
+
+ public void destroy() {
+ }
+
+ public String endConversation() {
+ return null;
+ }
+
+ public String endConversationCallback() {
+ return null;
+ }
+
+ public void incrementCount() {
+ }
+
+ public void incrementCountCallback() {
+ }
+
+ public void init() {
+ }
+
+ public void initializeCount(int count) {
+ this.count = count;
+ }
+
+ public void initializeCountCallback(int count) {
+ }
+
+ public int retrieveCount() {
+ return count;
+ }
+
+ public int retrieveCountCallback() {
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java
new file mode 100644
index 0000000000..accc1eee27
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationIdService;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationIdService.class)
+@Scope("CONVERSATION")
+public class ConversationIdComponentImpl implements ConversationIdService {
+
+ @ConversationID
+ public String cid;
+
+ private String setterCid;
+
+ public String getCIDField() {
+ return cid;
+ }
+ public String getCIDSetter() {
+ return setterCid;
+ }
+
+
+ @ConversationID
+ public void setCID(String cid) {
+ this.setterCid = cid;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
new file mode 100644
index 0000000000..90f6de86ac
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
@@ -0,0 +1,76 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxIdleTime="1 seconds")
+public class ConversationMaxIdleComponentImpl implements ConversationalService {
+
+ private int count;
+
+ public void businessException() throws BusinessException {
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ }
+
+ public void destroy() {
+ }
+
+ public String endConversation() {
+ return null;
+ }
+
+ public String endConversationCallback() {
+ return null;
+ }
+
+ public void incrementCount() {
+ }
+
+ public void incrementCountCallback() {
+ }
+
+ public void init() {
+ }
+
+ public void initializeCount(int count) {
+ this.count = count;
+ }
+
+ public void initializeCountCallback(int count) {
+ }
+
+ public int retrieveCount() {
+ return count;
+ }
+
+ public int retrieveCountCallback() {
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
new file mode 100644
index 0000000000..3f7a90b3dc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
@@ -0,0 +1,322 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalClientStatefulImpl implements ConversationalClient, ConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+
+ String clientConversationId = serviceReference.getConversationID().toString();
+ String serverConversationId = callableReference.endConversation();
+
+ if (clientConversationId.equals("MyConversation2") &&
+ serverConversationId.equals("MyConversation2") ) {
+ return clientConversationId;
+ } else {
+ return "client = " + clientConversationId +
+ "server = " + serverConversationId;
+ }
+
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ callbackCount = 2;
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+// conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+// conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount += count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ callbackCount = 0;
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java
new file mode 100644
index 0000000000..ab91498132
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java
@@ -0,0 +1,311 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.apache.tuscany.sca.itest.conversational.NonConversationalCallback;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalClientStatefulNonConversationalCallbackImpl implements ConversationalClient, NonConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ return callableReference.endConversation();
+
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ callbackCount = 2;
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+// conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+// conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount += count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
new file mode 100644
index 0000000000..e4f83656de
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
@@ -0,0 +1,318 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+public class ConversationalClientStatelessImpl implements ConversationalClient, ConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ // now test the second reference
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+
+ String clientConversationId = serviceReference.getConversationID().toString();
+ String serverConfersationId = callableReference.endConversation();
+
+ if (clientConversationId.equals("MyConversation2") &&
+ serverConfersationId.equals("MyConversation2") ) {
+ return clientConversationId;
+ } else {
+ return "client = " + clientConversationId +
+ "server = " + serverConfersationId;
+ }
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+// conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+// conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount = 0;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ callbackCount = 0;
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
new file mode 100644
index 0000000000..8fe7c5b6ba
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * A client component that accepts a reference to an ongoing conversation
+ * and takes part in that conversation
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalReferenceClient.class})
+public class ConversationalReferenceClientImpl implements ConversationalReferenceClient{
+
+ public void incrementCount(CallableReference conversationalService){
+ ConversationalService callableReference = conversationalService.getService();
+
+ callableReference.incrementCount();
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java
new file mode 100644
index 0000000000..9f4857f703
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java
@@ -0,0 +1,124 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+@Scope("REQUEST")
+public class ConversationalServiceRequestImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // static area in which to hold conversational data
+ private static HashMap conversationalState = new HashMap();
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ Integer conversationalCount = new Integer(count);
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ Integer conversationalCount = conversationalState.get(conversationId);
+ conversationalCount++;
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ Integer count = conversationalState.get(conversationId);
+ if (count != null){
+ return count.intValue();
+ } else {
+ return -999;
+ }
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ initializeCount(count);
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ incrementCount();
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ conversationalState.remove(conversationId);
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
new file mode 100644
index 0000000000..4b06251414
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
@@ -0,0 +1,119 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalServiceStatefulImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // local count - accumulates during the conversation
+ private int count = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ this.count = count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ count++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return count;
+ }
+
+ public void businessException() throws BusinessException {
+ calls.append("businessException,");
+ throw new BusinessException("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ this.count = count;
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ count++;
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ count = 0;
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java
new file mode 100644
index 0000000000..be039748fc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalServiceNonConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.NonConversationalCallback;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalServiceNonConversationalCallback.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalServiceStatefulNonConversationalCallbackImpl implements ConversationalServiceNonConversationalCallback {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected NonConversationalCallback nonConversationalCallback;
+
+ // local count - accumulates during the conversation
+ private int count = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ this.count = count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ count++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return count;
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ this.count = count;
+ nonConversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ count++;
+ nonConversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return nonConversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ calls.append("businessExceptionCallback,");
+ nonConversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ count = 0;
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return nonConversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
new file mode 100644
index 0000000000..42f2f1a603
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
@@ -0,0 +1,122 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+public class ConversationalServiceStatelessImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // static area in which to hold conversational data
+ private static HashMap conversationalState = new HashMap();
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ Integer conversationalCount = new Integer(count);
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ Integer conversationalCount = conversationalState.get(conversationId);
+ conversationalCount++;
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ Integer count = conversationalState.get(conversationId);
+ if (count != null){
+ return count.intValue();
+ } else {
+ return -999;
+ }
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ initializeCount(count);
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ incrementCount();
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ conversationalState.remove(conversationId);
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java
new file mode 100644
index 0000000000..a852aeda56
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java
@@ -0,0 +1,94 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.itest.conversational.BusinessException;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+public class ConversationalServiceStatelessScopeImpl implements ConversationalService {
+
+ @ConversationID
+ protected String cid;
+
+ static Map state = new HashMap();
+
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String endConversation() {
+ state.remove(cid);
+ return cid;
+ }
+
+ public String endConversationCallback() {
+ // TODO Auto-generated method stub
+ return null;
+
+ }
+
+ public void incrementCount() {
+ state.put(cid, Integer.valueOf(state.get(cid)+1));
+ }
+
+ public void businessException() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public void incrementCountCallback() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void initializeCount(int count) {
+ state.put(cid, Integer.valueOf(count));
+ }
+
+ public void initializeCountCallback(int count) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void businessExceptionCallback() throws BusinessException {
+ throw new BusinessException("Business Exception");
+ }
+
+ public int retrieveCount() {
+ return state.get(cid);
+ }
+
+ public int retrieveCountCallback() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..d5a1ff7410
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/conversational.composite b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/conversational.composite
new file mode 100644
index 0000000000..c4da99145d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/Conversational/conversational.composite
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/ConversationalServiceStateful.wsdl b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/ConversationalServiceStateful.wsdl
new file mode 100644
index 0000000000..20a92c9dc7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/ConversationalServiceStateful.wsdl
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/META-INF/sca-contribution.xml b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..73d078674c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/META-INF/sca-contribution.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/conversationalWSDL.composite b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/conversationalWSDL.composite
new file mode 100644
index 0000000000..9c6b0a2b34
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/main/resources/ConversationalWSDL/conversationalWSDL.composite
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationWSDLTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationWSDLTestCase.java
new file mode 100644
index 0000000000..9df966ebc2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationWSDLTestCase.java
@@ -0,0 +1,75 @@
+/*
+ * 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.itest.conversational;
+
+
+import java.io.File;
+
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationWSDLTestCase {
+
+ private SCANode node;
+ private ConversationalClient conversationalStatelessClientStatefulService;
+
+ @Before
+ public void setUp() throws Exception {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/ConversationalWSDL/conversationalWSDL.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/ConversationalWSDL").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class, "ConversationalStatelessClientStatefulService");
+
+
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatefulService = null;
+ }
+
+ @Test
+ public void testStatelessStatefulConversationFromInjectedReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ //@Test
+ public void testKeepServerRunning() throws Exception {
+ System.out.println("press enter to continue");
+ System.in.read();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallbackTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallbackTestCase.java
new file mode 100644
index 0000000000..ebd1e55dac
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallbackTestCase.java
@@ -0,0 +1,198 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class NonConversationalCallbackTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateful client non conversational callback stateful service tests
+ // ==================================================================
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromInjectedReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromServiceReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCheckingScope() {
+ resetCallStack();
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+ conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithCallback() {
+ resetCallStack();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulNonConversationalCallbackStatefulConversationHavingPassedReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ //@Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals("MyConversation3", id);
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/RequestScopeTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/RequestScopeTestCase.java
new file mode 100644
index 0000000000..2c16145f54
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/RequestScopeTestCase.java
@@ -0,0 +1,209 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceRequestImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RequestScopeTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateless client request scope service tests
+ // ============================================
+ @Test
+ public void testStatelessRequestConversationFromInjectedReference() {
+ int count = conversationalStatelessClientRequestService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientRequestService.runConversationFromInjectedReference2();
+ Assert.assertEquals(1, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationFromServiceReference() {
+ int count = conversationalStatelessClientRequestService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientRequestService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientRequestService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationCheckingScope() {
+ resetCallStack();
+ ConversationalServiceRequestImpl.calls = new StringBuffer();
+ conversationalStatelessClientRequestService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,",
+ ConversationalServiceRequestImpl.calls.toString());
+ //init,initializeCount,init,incrementCount,init,retrieveCount,init,endConversation,
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithCallback() {
+ resetCallStack();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ int count = conversationalStatelessClientRequestService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatelessRequestConversationHavingPassedReference() {
+ int count = conversationalStatelessClientRequestService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationBusinessException() {
+ String message = conversationalStatelessClientRequestService.runConversationBusinessException();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationBusinessExceptionCallback() {
+ String message = conversationalStatelessClientRequestService.runConversationBusinessExceptionCallback();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientRequestService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatefulTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatefulTestCase.java
new file mode 100644
index 0000000000..4166e6acdf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatefulTestCase.java
@@ -0,0 +1,193 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class StatefulStatefulTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateful client stateful service tests
+ // ======================================
+ @Test
+ public void testStatefulStatefulConversationFromInjectedReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationFromServiceReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientStatefulService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientStatefulService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatefulClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatefulClientStatefulService.runConversationWithCallback();
+ Assert.assertEquals(4, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalClientStatefulImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulStatefulConversationHavingPassedReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatelessTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatelessTestCase.java
new file mode 100644
index 0000000000..6023b7cd53
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatefulStatelessTestCase.java
@@ -0,0 +1,193 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class StatefulStatelessTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateful client stateless service tests
+ // =======================================
+ @Test
+ public void testStatefulStatelessConversationFromInjectedReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationFromServiceReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatefulClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatefulClientStatelessService.runConversationWithCallback();
+ Assert.assertEquals(4, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalClientStatefulImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulStatelessConversationHavingPassedReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatefulTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatefulTestCase.java
new file mode 100644
index 0000000000..fb3a3cec6f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatefulTestCase.java
@@ -0,0 +1,205 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class StatelessStatefulTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateless client stateful service tests
+ // =======================================
+ @Test
+ public void testStatelessStatefulConversationFromInjectedReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationFromServiceReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientStatefulService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientStatefulService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatelessClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatelessClientStatefulService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationHavingPassedReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationBusinessException() {
+ String message = conversationalStatelessClientStatefulService.runConversationBusinessException();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationBusinessExceptionCallback() {
+ String message = conversationalStatelessClientStatefulService.runConversationBusinessExceptionCallback();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatelessTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatelessTestCase.java
new file mode 100644
index 0000000000..5fbe2c3f69
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/StatelessStatelessTestCase.java
@@ -0,0 +1,192 @@
+/*
+ * 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.itest.conversational;
+
+import java.io.File;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class StatelessStatelessTestCase {
+
+ private static SCANode node;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(new File("src/main/resources/Conversational/conversational.composite").toURL().toString(),
+ new SCAContribution("TestContribution",
+ new File("src/main/resources/Conversational").toURL().toString()));
+
+
+ node.start();
+
+ conversationalStatelessClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = ((SCAClient)node).getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ node.stop();
+ conversationalStatelessClientStatelessService = null;
+ conversationalStatelessClientStatefulService = null;
+ conversationalStatefulClientStatelessService = null;
+ conversationalStatefulClientStatefulService = null;
+ conversationalStatelessClientRequestService = null;
+ conversationalStatefulClientNonConversationalCallbackStatelessService = null;
+ }
+
+ private static void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+
+ // stateless client stateless service tests
+ // ========================================
+
+ @Test
+ public void testStatelessStatelessConversationFromInjectedReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationFromServiceReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+ @Test
+ public void testStatelessStatelessConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatelessClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatelessClientStatelessService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+ //@Test
+ public void testStatelessStatelessConversationHavingPassedReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessStatelessConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/pom.xml b/tags/java/sca/1.5.1-RC2/itest/conversations/pom.xml
new file mode 100644
index 0000000000..f5c80f240a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-conversations
+ Apache Tuscany SCA iTest Conversations
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/Record.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/Record.java
new file mode 100644
index 0000000000..a3b83dfc14
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/Record.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 org.apache.tuscany.sca.itest;
+
+import java.io.Serializable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Record implements Serializable {
+ public String id;
+ public String conversationId;
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/TestResult.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/TestResult.java
new file mode 100644
index 0000000000..8e98b9cbd4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/TestResult.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 org.apache.tuscany.sca.itest;
+
+import java.util.Hashtable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TestResult {
+ public static Hashtable results = new Hashtable();
+ private static int completed = 0;
+ public static synchronized void updateCompleted() {
+ ++completed;
+ }
+
+ public static synchronized int getCompleted() {
+ return completed;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/AService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/AService.java
new file mode 100644
index 0000000000..e7583c339a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/AService.java
@@ -0,0 +1,56 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+
+/**
+ * Simple conversational Service that uses another Conversational Service
+ */
+@Conversational
+public interface AService {
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ String getState();
+
+ /**
+ * Returns the state for the other service that this service is using
+ *
+ * @return The state for the other service that this service is using
+ */
+ String getStateOnB();
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ void setState(String aState);
+
+ /**
+ * Sets the state for the other service that this service is using
+ *
+ * @param aState The state for the other service that this service is using
+ */
+ void setStateOnB(String aState);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Alpha.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Alpha.java
new file mode 100644
index 0000000000..bc4a5fc571
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Alpha.java
@@ -0,0 +1,32 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.OneWay;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+public interface Alpha {
+ @OneWay
+ void run(int param);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/BService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/BService.java
new file mode 100644
index 0000000000..77d7f4c007
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/BService.java
@@ -0,0 +1,42 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+
+/**
+ * Simple conversational Service
+ */
+@Conversational
+public interface BService {
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ String getState();
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ void setState(String aState);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Beta.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Beta.java
new file mode 100644
index 0000000000..e422938b27
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Beta.java
@@ -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 org.apache.tuscany.sca.itest.conversational;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+public interface Beta {
+ CallableReference getRef(int param);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/CService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/CService.java
new file mode 100644
index 0000000000..a6dbf56797
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/CService.java
@@ -0,0 +1,42 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+
+/**
+ * Simple conversational Service that uses another Conversational Service
+ */
+@Conversational
+public interface CService {
+
+ String getState();
+
+ void setState(String aState);
+
+ Object getConversationID();
+
+ Object getConversationObjectConversationId();
+
+ void setConversationID(String theID);
+
+ void endConversation();
+
+ void endConversationViaAnnotatedMethod();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Constants.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Constants.java
new file mode 100644
index 0000000000..3f04e9f09e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Constants.java
@@ -0,0 +1,25 @@
+/*
+ * 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.itest.conversational;
+
+public interface Constants {
+
+ String A_INITIAL_VALUE = "Initial Value of A";
+ String B_INITIAL_VALUE = "Initial Value of B";
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java
new file mode 100644
index 0000000000..53dadc3dc7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.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 org.apache.tuscany.sca.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+
+@Conversational
+public interface ConversationIdService {
+
+ String getCIDField();
+ String getCIDSetter();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
new file mode 100644
index 0000000000..8cad88d2f4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
@@ -0,0 +1,50 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing conversational callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+public interface ConversationalCallback {
+
+ public void init();
+
+ public void destroy();
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws Exception;
+
+ @EndsConversation
+ public String endConversation();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
new file mode 100644
index 0000000000..2532346349
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
@@ -0,0 +1,50 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The client for the conversational itest. Is implemented by clients
+ * offering both stateless and stateful callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Remotable
+public interface ConversationalClient {
+
+ public int runConversationFromInjectedReference();
+ public int runConversationFromInjectedReference2();
+ public int runConversationFromServiceReference();
+ public int runConversationWithUserDefinedConversationId();
+ public String runConversationCheckUserDefinedConversationId();
+ public int runConversationCheckingScope();
+ public int runConversationWithCallback();
+ public int runConversationHavingPassedReference();
+ public String runConversationBusinessException();
+ public String runConversationBusinessExceptionCallback();
+ public int runConversationCallingEndedConversation();
+ public int runConversationCallingEndedConversationCallback();
+ public String runConversationCallingEndedConversationCheckConversationId();
+ public String runConversationCallingEndedConversationCallbackCheckConversationId();
+ public int runConversationAgeTimeout();
+ public int runConversationIdleTimeout();
+ public int runConversationPrincipleError();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java
new file mode 100644
index 0000000000..8f008fa711
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.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 org.apache.tuscany.sca.itest.conversational;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The client that calls into an existing conversation by accepting
+ * a reference to that conversation
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Remotable
+public interface ConversationalReferenceClient {
+
+ public void incrementCount(CallableReference conversationalService);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
new file mode 100644
index 0000000000..546382cfd1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
@@ -0,0 +1,62 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The service interface used when testing conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+@Callback(ConversationalCallback.class)
+public interface ConversationalService {
+
+ public void init();
+
+ public void destroy();
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws Exception;
+
+ public void initializeCountCallback(int count);
+
+ public void incrementCountCallback();
+
+ public int retrieveCountCallback();
+
+ public void businessExceptionCallback() throws Exception;
+
+ @EndsConversation
+ public String endConversation();
+
+ public String endConversationCallback();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java
new file mode 100644
index 0000000000..f1a21cc18f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java
@@ -0,0 +1,62 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The service interface used when testing conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+@Conversational
+@Callback(NonConversationalCallback.class)
+public interface ConversationalServiceNonConversationalCallback {
+
+ public void init();
+
+ public void destroy();
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws Exception;
+
+ public void initializeCountCallback(int count);
+
+ public void incrementCountCallback();
+
+ public int retrieveCountCallback();
+
+ public void businessExceptionCallback() throws Exception;
+
+ @EndsConversation
+ public String endConversation();
+
+ public String endConversationCallback();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/DService.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/DService.java
new file mode 100644
index 0000000000..74afbfb763
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/DService.java
@@ -0,0 +1,46 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+
+/**
+ * Simple conversational Service
+ */
+@Conversational
+public interface DService {
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ String getState();
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ void setState(String aState);
+
+ @EndsConversation
+ void endConversationViaAnnotatedMethod();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Gamma.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Gamma.java
new file mode 100644
index 0000000000..5f97b16088
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/Gamma.java
@@ -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 org.apache.tuscany.sca.itest.conversational;
+
+import org.apache.tuscany.sca.itest.Record;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+@Conversational
+public interface Gamma {
+ void start(int param);
+
+ boolean hasNext();
+
+ Record next();
+
+ @EndsConversation
+ void stop();
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
new file mode 100644
index 0000000000..3ce3e3ada7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
@@ -0,0 +1,46 @@
+/*
+ * 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.itest.conversational;
+
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing conversational callbacks
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+public interface NonConversationalCallback {
+
+ public void init();
+
+ public void destroy();
+
+ public void initializeCount(int count);
+
+ public void incrementCount();
+
+ public int retrieveCount();
+
+ public void businessException() throws Exception;
+
+ public String endConversation();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AServiceImpl.java
new file mode 100644
index 0000000000..95c9c7ae6e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AServiceImpl.java
@@ -0,0 +1,111 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.lang.reflect.Proxy;
+import org.apache.tuscany.sca.core.invocation.JDKInvocationHandler;
+
+import org.apache.tuscany.sca.itest.conversational.AService;
+import org.apache.tuscany.sca.itest.conversational.BService;
+import org.apache.tuscany.sca.itest.conversational.Constants;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Simple conversational Service that uses another Conversational Service
+ */
+@Service(AService.class)
+@Scope("CONVERSATION")
+public class AServiceImpl implements AService {
+
+ /**
+ * The state
+ */
+ private String state = Constants.A_INITIAL_VALUE;
+
+ /**
+ * The reference to the other service
+ */
+ private BService b;
+
+ /**
+ * Constructor
+ *
+ */
+ public AServiceImpl() {
+ System.out.println("---> AServiceImpl constructor for " + this);
+ }
+
+ /**
+ * Inject the reference to the other service
+ * @param aB The other service.
+ */
+ @Reference(name="b")
+ public void setB(BService aB) {
+ System.out.println("---> Setting reference to B on " + this + " to " + aB);
+ this.b = aB;
+ }
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ public String getState() {
+ return state;
+ }
+
+ /**
+ * Returns the state for the other service that this service is using
+ *
+ * @return The state for the other service that this service is using
+ */
+ public String getStateOnB() {
+ return b.getState();
+ }
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ public void setState(String aState) {
+ this.state = aState;
+ }
+
+ /**
+ * Sets the state for the other service that this service is using
+ *
+ * @param aState The state for the other service that this service is using
+ */
+ public void setStateOnB(String aState) {
+ b.setState(aState);
+ }
+
+ /**
+ * Sets the conversation ID for this service
+ * @param id The Conversation ID
+ */
+ @ConversationID
+ public void setConversationID(String id) {
+ System.out.println("Conversation ID for " + this + " is set to " + id);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AlphaImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AlphaImpl.java
new file mode 100644
index 0000000000..a5f37f7a52
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/AlphaImpl.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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.Record;
+import org.apache.tuscany.sca.itest.TestResult;
+import org.apache.tuscany.sca.itest.conversational.Alpha;
+import org.apache.tuscany.sca.itest.conversational.Beta;
+import org.apache.tuscany.sca.itest.conversational.Gamma;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Service(Alpha.class)
+@Scope("COMPOSITE")
+public class AlphaImpl implements Alpha {
+ @Reference
+ public Beta beta;
+
+ @Context
+ protected ComponentContext componentContext;
+
+ public void run(int param) {
+ CallableReference gammaRef = null;
+ boolean testPassed = true;
+ try {
+ gammaRef = beta.getRef(param);
+ while (gammaRef.getService().hasNext()) {
+ Record record = gammaRef.getService().next();
+ if (!record.conversationId.equals(gammaRef.getConversation().getConversationID())) {
+ // Record returned is not from this conversation.
+ testPassed = false;
+ }
+ }
+ } catch (Exception ex) {
+ testPassed = false;
+ ex.printStackTrace();
+ } finally {
+ TestResult.updateCompleted();
+ if (gammaRef != null) {
+ TestResult.results.put(gammaRef.getConversation()
+ .getConversationID(), testPassed);
+ gammaRef.getService().stop();
+ }
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BServiceImpl.java
new file mode 100644
index 0000000000..c1e27641ef
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BServiceImpl.java
@@ -0,0 +1,73 @@
+/*
+ * 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.itest.conversational.impl;
+
+
+import org.apache.tuscany.sca.itest.conversational.BService;
+import org.apache.tuscany.sca.itest.conversational.Constants;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Simple conversational Service
+ */
+@Service(BService.class)
+@Scope("CONVERSATION")
+public class BServiceImpl implements BService {
+
+ /**
+ * The state for this service
+ */
+ private String state = Constants.B_INITIAL_VALUE;
+
+ /**
+ * Constructor
+ */
+ public BServiceImpl() {
+ System.out.println("---> BServiceImpl constructor for " + this);
+ }
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ public String getState() {
+ return state;
+ }
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ public void setState(String aState) {
+ this.state = aState;
+ }
+
+ /**
+ * Sets the conversation ID for this service
+ * @param id The Conversation ID
+ */
+ @ConversationID
+ public void setConversationID(String id) {
+ System.out.println("Conversation ID for " + this + " is set to " + id);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BetaImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BetaImpl.java
new file mode 100644
index 0000000000..900b8f743f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/BetaImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.Beta;
+import org.apache.tuscany.sca.itest.conversational.Gamma;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Service(Beta.class)
+@Scope("COMPOSITE")
+public class BetaImpl implements Beta {
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ public Gamma gamma;
+
+ public CallableReference getRef(int param) {
+ ServiceReference gammaRef = componentContext
+ .getServiceReference(Gamma.class, "gamma");
+ Gamma g = gammaRef.getService();
+ g.start(param);
+ return gammaRef;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/CServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/CServiceImpl.java
new file mode 100644
index 0000000000..b21f956bd9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/CServiceImpl.java
@@ -0,0 +1,85 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.CService;
+import org.apache.tuscany.sca.itest.conversational.DService;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Simple conversational Service that uses another Conversational Service
+ */
+@Service(CService.class)
+@Scope("CONVERSATION")
+public class CServiceImpl implements CService {
+
+ private ServiceReference dServiceRef;
+
+ @Reference(name = "d")
+ public void setD(ServiceReference servRef) {
+ this.dServiceRef = servRef;
+ }
+
+ public String getState() {
+ return dServiceRef.getService().getState();
+ }
+
+ public void setState(String aState) {
+ dServiceRef.getService().setState(aState);
+ }
+
+
+ /*
+ * When the coversationId is set manually the client may access the
+ * conversation id that will be used by the reference using
+ * ServiceReference.getConversationId()
+ */
+ public Object getConversationID() {
+ return dServiceRef.getConversationID();
+ }
+
+ /*
+ * Whether the conversation ID is chosen by the client or is generated by
+ * the system, the client may access the conversation ID by calling
+ * Conversation.getConversationID().
+ */
+ public Object getConversationObjectConversationId() {
+ // TODO Auto-generated method stub
+ if (dServiceRef.getConversation() != null){
+ return dServiceRef.getConversation().getConversationID();
+ } else {
+ return null;
+ }
+ }
+
+ public void endConversation() {
+ dServiceRef.getConversation().end();
+ }
+
+ public void endConversationViaAnnotatedMethod() {
+ dServiceRef.getService().endConversationViaAnnotatedMethod();
+ }
+
+ public void setConversationID(String theID) {
+ dServiceRef.setConversationID(theID);
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
new file mode 100644
index 0000000000..9deef312ac
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
@@ -0,0 +1,75 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="1 seconds")
+public class ConversationAgeComponentImpl implements ConversationalService {
+
+ private int count;
+
+ public void businessException() throws Exception {
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ }
+
+ public void destroy() {
+ }
+
+ public String endConversation() {
+ return null;
+ }
+
+ public String endConversationCallback() {
+ return null;
+ }
+
+ public void incrementCount() {
+ }
+
+ public void incrementCountCallback() {
+ }
+
+ public void init() {
+ }
+
+ public void initializeCount(int count) {
+ this.count = count;
+ }
+
+ public void initializeCountCallback(int count) {
+ }
+
+ public int retrieveCount() {
+ return count;
+ }
+
+ public int retrieveCountCallback() {
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java
new file mode 100644
index 0000000000..cffa76186a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationIdService;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationIdService.class)
+@Scope("CONVERSATION")
+public class ConversationIdComponentImpl implements ConversationIdService {
+
+ @ConversationID
+ public String cid;
+
+ private String setterCid;
+
+ public String getCIDField() {
+ return cid;
+ }
+ public String getCIDSetter() {
+ return setterCid;
+ }
+
+
+ @ConversationID
+ public void setCID(String cid) {
+ this.setterCid = cid;
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
new file mode 100644
index 0000000000..1272c7ab7f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
@@ -0,0 +1,75 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxIdleTime="1 seconds")
+public class ConversationMaxIdleComponentImpl implements ConversationalService {
+
+ private int count;
+
+ public void businessException() throws Exception {
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ }
+
+ public void destroy() {
+ }
+
+ public String endConversation() {
+ return null;
+ }
+
+ public String endConversationCallback() {
+ return null;
+ }
+
+ public void incrementCount() {
+ }
+
+ public void incrementCountCallback() {
+ }
+
+ public void init() {
+ }
+
+ public void initializeCount(int count) {
+ this.count = count;
+ }
+
+ public void initializeCountCallback(int count) {
+ }
+
+ public int retrieveCount() {
+ return count;
+ }
+
+ public int retrieveCountCallback() {
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
new file mode 100644
index 0000000000..847b038881
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
@@ -0,0 +1,321 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalClientStatefulImpl implements ConversationalClient, ConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+
+ String clientConversationId = serviceReference.getConversationID().toString();
+ String serverConversationId = callableReference.endConversation();
+
+ if (clientConversationId.equals("MyConversation2") &&
+ serverConversationId.equals("MyConversation2") ) {
+ return clientConversationId;
+ } else {
+ return "client = " + clientConversationId +
+ "server = " + serverConversationId;
+ }
+
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ callbackCount = 2;
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+ conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+ conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount += count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ callbackCount = 0;
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java
new file mode 100644
index 0000000000..b77e4c0194
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java
@@ -0,0 +1,310 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.apache.tuscany.sca.itest.conversational.NonConversationalCallback;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalClientStatefulNonConversationalCallbackImpl implements ConversationalClient, NonConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ return callableReference.endConversation();
+
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ callbackCount = 2;
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+ conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+ conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount += count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
new file mode 100644
index 0000000000..5b3906fc2c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
@@ -0,0 +1,317 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalClient.class})
+public class ConversationalClientStatelessImpl implements ConversationalClient, ConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @Reference
+ protected ConversationalService conversationalService2;
+
+ @Reference
+ protected ConversationalReferenceClient conversationalReferenceClient;
+
+ private int clientCount = 0;
+ private int callbackCount = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ // From ConversationalClient
+ public int runConversationFromInjectedReference(){
+ calls.append("runConversationFromInjectedReference,");
+ conversationalService.initializeCount(1);
+ conversationalService.incrementCount();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromInjectedReference2(){
+ calls.append("runConversationFromInjectedReference2,");
+
+ // now test the second reference
+ conversationalService2.initializeCount(1);
+ conversationalService2.incrementCount();
+
+ // stick in a call to the first reference to
+ // make sure the two references don't clash
+ conversationalService.initializeCount(1);
+
+ clientCount = conversationalService2.retrieveCount();
+ conversationalService2.endConversation();
+
+ // end the conversation through the first reference
+ conversationalService.endConversation();
+
+ return clientCount;
+ }
+ public int runConversationFromServiceReference(){
+ calls.append("runConversationFromServiceReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public int runConversationWithUserDefinedConversationId(){
+ calls.append("runConversationWithUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation1");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ // serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+ public String runConversationCheckUserDefinedConversationId(){
+ calls.append("runConversationCheckUserDefinedConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation2");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+
+ String clientConversationId = serviceReference.getConversationID().toString();
+ String serverConfersationId = callableReference.endConversation();
+
+ if (clientConversationId.equals("MyConversation2") &&
+ serverConfersationId.equals("MyConversation2") ) {
+ return clientConversationId;
+ } else {
+ return "client = " + clientConversationId +
+ "server = " + serverConfersationId;
+ }
+ }
+ public int runConversationCheckingScope(){
+ calls.append("runConversationCheckingScope,");
+ // run a conversation
+ return runConversationFromInjectedReference();
+
+ // test will then use a static method to find out how many times
+ // init/destroy were called
+ }
+ public int runConversationWithCallback(){
+ calls.append("runConversationWithCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.incrementCountCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+
+ return clientCount;
+ }
+
+ public int runConversationHavingPassedReference(){
+ calls.append("runConversationHavingPassedReference,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ conversationalReferenceClient.incrementCount(serviceReference);
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ serviceReference.getConversation().end();
+
+ return clientCount;
+ }
+
+ public String runConversationBusinessException(){
+ calls.append("runConversationbusinessException,");
+ try {
+ conversationalService.initializeCount(1);
+ conversationalService.businessException();
+ clientCount = conversationalService.retrieveCount();
+ conversationalService.endConversation();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public String runConversationBusinessExceptionCallback(){
+ calls.append("runConversationbusinessExceptionCallback,");
+ try {
+ conversationalService.initializeCountCallback(1);
+ conversationalService.businessExceptionCallback();
+ clientCount = conversationalService.retrieveCountCallback();
+ conversationalService.endConversationCallback();
+ } catch(Exception ex) {
+ return ex.getMessage();
+ }
+
+ return "No Exception Returned";
+ }
+
+ public int runConversationCallingEndedConversation(){
+ calls.append("runConversationCallingEndedConversation,");
+ conversationalService.initializeCount(1);
+ conversationalService.endConversation();
+ return conversationalService.retrieveCount();
+ }
+
+ public int runConversationCallingEndedConversationCallback(){
+ calls.append("runConversationCallingEndedConversationCallback,");
+ conversationalService.initializeCountCallback(1);
+ conversationalService.endConversationCallback();
+ return conversationalService.retrieveCountCallback();
+ }
+
+ public String runConversationCallingEndedConversationCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversation();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public String runConversationCallingEndedConversationCallbackCheckConversationId(){
+ calls.append("runConversationCallingEndedConversationCallbackCheckConversationId,");
+ ServiceReference serviceReference = componentContext.getServiceReference(ConversationalService.class,
+ "conversationalService");
+ serviceReference.setConversationID("MyConversation3");
+
+ ConversationalService callableReference = serviceReference.getService();
+
+ callableReference.initializeCount(1);
+ callableReference.incrementCount();
+ clientCount = callableReference.retrieveCount();
+ callableReference.endConversationCallback();
+
+ if (serviceReference.getConversation() ==null ) {
+ return null;
+ } else {
+ return serviceReference.getConversation().getConversationID().toString();
+ }
+ }
+
+ public int runConversationAgeTimeout(){
+ calls.append("runConversationAgeTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationIdleTimeout(){
+ calls.append("runConversationIdleTimeout,");
+ // done in other testing
+ return clientCount;
+ }
+ public int runConversationPrincipleError(){
+ calls.append("runConversationPrincipleError,");
+ // TODO - when policy framework is done
+ return clientCount;
+ }
+
+
+ // From ConversationalCallback
+ @Init
+ public void init(){
+ calls.append("init,");
+
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ callbackCount = 0;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ callbackCount++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return callbackCount;
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ callbackCount = 0;
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
new file mode 100644
index 0000000000..8fe7c5b6ba
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalReferenceClient;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * A client component that accepts a reference to an ongoing conversation
+ * and takes part in that conversation
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+@Service(interfaces={ConversationalReferenceClient.class})
+public class ConversationalReferenceClientImpl implements ConversationalReferenceClient{
+
+ public void incrementCount(CallableReference conversationalService){
+ ConversationalService callableReference = conversationalService.getService();
+
+ callableReference.incrementCount();
+ }
+
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java
new file mode 100644
index 0000000000..9a25f0f59a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java
@@ -0,0 +1,123 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+@Scope("REQUEST")
+public class ConversationalServiceRequestImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // static area in which to hold conversational data
+ private static HashMap conversationalState = new HashMap();
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ Integer conversationalCount = new Integer(count);
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ Integer conversationalCount = conversationalState.get(conversationId);
+ conversationalCount++;
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ Integer count = conversationalState.get(conversationId);
+ if (count != null){
+ return count.intValue();
+ } else {
+ return -999;
+ }
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ initializeCount(count);
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ incrementCount();
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ conversationalState.remove(conversationId);
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
new file mode 100644
index 0000000000..efcbdff06f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java
@@ -0,0 +1,117 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalServiceStatefulImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // local count - accumulates during the conversation
+ private int count = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ this.count = count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ count++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return count;
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ this.count = count;
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ count++;
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ count = 0;
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java
new file mode 100644
index 0000000000..8454b3846b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java
@@ -0,0 +1,117 @@
+/*
+ * 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.itest.conversational.impl;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalServiceNonConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.NonConversationalCallback;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationAttributes;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalServiceNonConversationalCallback.class)
+@Scope("CONVERSATION")
+@ConversationAttributes(maxAge="10 minutes",
+ maxIdleTime="5 minutes",
+ singlePrincipal=false)
+public class ConversationalServiceStatefulNonConversationalCallbackImpl implements ConversationalServiceNonConversationalCallback {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected NonConversationalCallback nonConversationalCallback;
+
+ // local count - accumulates during the conversation
+ private int count = 0;
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ this.count = count;
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ count++;
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ return count;
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ this.count = count;
+ nonConversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ count++;
+ nonConversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return nonConversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ calls.append("businessExceptionCallback,");
+ nonConversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ count = 0;
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return nonConversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
new file mode 100644
index 0000000000..07186c91e1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
@@ -0,0 +1,123 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalCallback;
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Service(ConversationalService.class)
+@Scope("STATELESS")
+public class ConversationalServiceStatelessImpl implements ConversationalService {
+
+ @ConversationID
+ protected String conversationId;
+
+ @Callback
+ protected ConversationalCallback conversationalCallback;
+
+ // static area in which to hold conversational data
+ private static HashMap conversationalState = new HashMap();
+
+ // a static member variable that records the number of times this service is called
+ public static StringBuffer calls = new StringBuffer();
+
+ @Init
+ public void init(){
+ calls.append("init,");
+ }
+
+ @Destroy
+ public void destroy(){
+ calls.append("destroy,");
+ }
+
+ public void initializeCount(int count){
+ calls.append("initializeCount,");
+ Integer conversationalCount = new Integer(count);
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public void incrementCount(){
+ calls.append("incrementCount,");
+ Integer conversationalCount = conversationalState.get(conversationId);
+ conversationalCount++;
+ conversationalState.put(conversationId, conversationalCount);
+ }
+
+ public int retrieveCount(){
+ calls.append("retrieveCount,");
+ Integer count = conversationalState.get(conversationId);
+ if (count != null){
+ return count.intValue();
+ } else {
+ return -999;
+ }
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public void initializeCountCallback(int count){
+ calls.append("initializeCountCallback,");
+ initializeCount(count);
+ conversationalCallback.initializeCount(count);
+ }
+
+ public void incrementCountCallback(){
+ calls.append("incrementCountCallback,");
+ incrementCount();
+ conversationalCallback.incrementCount();
+ }
+
+ public int retrieveCountCallback(){
+ calls.append("retrieveCountCallback,");
+ return conversationalCallback.retrieveCount();
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ calls.append("businessExceptionCallback,");
+ conversationalCallback.businessException();
+ }
+
+ public String endConversation(){
+ calls.append("endConversation,");
+ conversationalState.remove(conversationId);
+ return conversationId;
+ }
+
+ public String endConversationCallback(){
+ calls.append("endConversationCallback,");
+ return conversationalCallback.endConversation();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java
new file mode 100644
index 0000000000..344aa99dff
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java
@@ -0,0 +1,93 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.itest.conversational.ConversationalService;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Service;
+
+@Service(ConversationalService.class)
+public class ConversationalServiceStatelessScopeImpl implements ConversationalService {
+
+ @ConversationID
+ protected String cid;
+
+ static Map state = new HashMap();
+
+ public void destroy() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String endConversation() {
+ state.remove(cid);
+ return cid;
+ }
+
+ public String endConversationCallback() {
+ // TODO Auto-generated method stub
+ return null;
+
+ }
+
+ public void incrementCount() {
+ state.put(cid, Integer.valueOf(state.get(cid)+1));
+ }
+
+ public void businessException() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public void incrementCountCallback() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void init() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void initializeCount(int count) {
+ state.put(cid, Integer.valueOf(count));
+ }
+
+ public void initializeCountCallback(int count) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void businessExceptionCallback() throws Exception {
+ throw new Exception("Business Exception");
+ }
+
+ public int retrieveCount() {
+ return state.get(cid);
+ }
+
+ public int retrieveCountCallback() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/DServiceImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/DServiceImpl.java
new file mode 100644
index 0000000000..8d79bb75e8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/DServiceImpl.java
@@ -0,0 +1,71 @@
+/*
+ * 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.itest.conversational.impl;
+
+
+import org.apache.tuscany.sca.itest.conversational.Constants;
+import org.apache.tuscany.sca.itest.conversational.DService;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * Simple conversational Service
+ */
+@Service(DService.class)
+@Scope("CONVERSATION")
+public class DServiceImpl implements DService {
+
+ /**
+ * The state for this service
+ */
+ private String state = "Initial state value";
+
+ /**
+ * Returns the state for this service.
+ *
+ * @return The state for this service
+ */
+ public String getState() {
+ return state;
+ }
+
+ /**
+ * Sets the state for this service.
+ *
+ * @param aState The state for this service
+ */
+ public void setState(String aState) {
+ this.state = aState;
+ }
+
+ /**
+ * Sets the conversation ID for this service
+ * @param id The Conversation ID
+ */
+ @ConversationID
+ public void setConversationID(String id) {
+ System.out.println ("Setting conversation ID at service = " + id );
+ }
+
+ public void endConversationViaAnnotatedMethod() {
+ System.out.println ("Annotated Ends Conversation");
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/GammaImpl.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/GammaImpl.java
new file mode 100644
index 0000000000..d1b769216b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/GammaImpl.java
@@ -0,0 +1,66 @@
+/*
+ * 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.itest.conversational.impl;
+
+import java.util.ArrayList;
+
+import org.apache.tuscany.sca.itest.Record;
+import org.apache.tuscany.sca.itest.conversational.Gamma;
+import org.osoa.sca.annotations.ConversationID;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@Service(Gamma.class)
+@Scope("CONVERSATION")
+public class GammaImpl implements Gamma {
+ @ConversationID
+ public String conversationId;
+
+ private ArrayList list;
+
+ public void start(int param) {
+ list = new ArrayList();
+ fillList(param, conversationId);
+ }
+
+ public boolean hasNext() {
+ return !list.isEmpty();
+ }
+
+ public Record next() {
+ return list.remove(0);
+ }
+
+ public void stop() {
+ list = null;
+ }
+
+ private void fillList(int param, String cid) {
+ for (int i = 0; i < param; i++) {
+ Record record = new Record();
+ record.id = "id_" + i;
+ record.conversationId = cid;
+ list.add(record);
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationAge.composite b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationAge.composite
new file mode 100644
index 0000000000..abd1c35ced
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationAge.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationUniqueId.composite b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationUniqueId.composite
new file mode 100644
index 0000000000..831449a079
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/ConversationUniqueId.composite
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationId.composite b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationId.composite
new file mode 100644
index 0000000000..e61eb08194
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationId.composite
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationLifetime.composite b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationLifetime.composite
new file mode 100644
index 0000000000..3b79dc43d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversationLifetime.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversational.composite b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversational.composite
new file mode 100644
index 0000000000..4da3ce74d5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/main/resources/conversational.composite
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java
new file mode 100644
index 0000000000..3e750bdd1e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java
@@ -0,0 +1,54 @@
+/*
+ * 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.itest.conversational;
+
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationIdTestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("conversationId.composite");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testConversationId() {
+ ConversationIdService service =
+ domain.getService(ConversationIdService.class, "ConversationIdComponent");
+ Assert.assertNotNull(service.getCIDField());
+ Assert.assertNotNull(service.getCIDSetter());
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationLifetimeTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationLifetimeTestCase.java
new file mode 100644
index 0000000000..326a833a42
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationLifetimeTestCase.java
@@ -0,0 +1,203 @@
+/*
+ * 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.itest.conversational;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationLifetimeTestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("conversationLifetime.composite");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ /**
+ * Following a clarification re. the wording of the Java Common Annotations and APIs 1.00 Specification
+ * (see TUSCANY-2055) the following is accepted to be the intended operation
+ *
+ * Whether the conversation ID is chosen by the user or is generated by the system, the client
+ * may access the conversation ID by calling getConversationID() on the current conversation object.
+ *
+ * ServiceReference.getConversationID() - Returns the id supplied by the user that will be associated with
+ * future conversations initiated through this reference, or null if no ID has been set by the user.
+ *
+ * ServiceReference.setConversationID(Object conversationId) - Set an ID, supplied by the user, to associate with any future conversation
+ * started through this reference. If the value supplied is null then the id will be generated
+ * by the implementation. Throws an IllegalStateException if a conversation is currently
+ * associated with this reference.
+ *
+ */
+
+ /**
+ * Verify that ServiceReference.getConversationID() returns null before a conversation
+ * ID has been set manually.
+ */
+ @Test
+ public void getConversationID() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ Assert.assertNull(service.getConversationID());
+ }
+
+ /**
+ * Verify that ServiceReference.getConversationID() returns any value previous set through the
+ * setConversationID() API.
+ */
+ @Test
+ public void getConversationID2() {
+ String userProvidedID = "A conversation ID";
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.setConversationID(userProvidedID);
+ service.getState();
+ Assert.assertEquals(service.getConversationID(), userProvidedID);
+ }
+
+ /**
+ * Whether the conversation ID is chosen by the user or is generated by the system, the client
+ * may access the conversation ID by calling getConversationID() on the current conversation object.
+ * Here test the manually set conversationID
+ */
+ @Test
+ public void getConversationID3() {
+ String userProvidedID = "A conversation ID";
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.setConversationID(userProvidedID);
+ service.getState();
+ Assert.assertEquals(service.getConversationObjectConversationId(), userProvidedID);
+ }
+
+ /**
+ * Whether the conversation ID is chosen by the user or is generated by the system, the client
+ * may access the conversation ID by calling getConversationID() on the current conversation object.
+ * Here test the auto generated conversationId
+ */
+ @Test
+ public void getConversationID4() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ Assert.assertNotNull(service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 494-495 Verify:
+ * If a method is invoked on a service reference after an
+ * "@EndsConversation" method has been called then a new conversation will
+ * automatically be started.
+ */
+ @Test
+ public void implicitStartNewConversationAfterEnd() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ Object firstID = service.getConversationObjectConversationId();
+ service.endConversationViaAnnotatedMethod();
+ service.getState();
+ Assert.assertNotSame(firstID, service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 495-495 Verify: If a
+ * method is invoked on a service reference after an "@EndsConversation"
+ * method has been called then a new conversation will automatically be
+ * started. Note: Uses Conversation.end() rather than "@EndsConversation"
+ */
+ @Test
+ public void implicitStartNewConversationAfterEnd2() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ Object firstID = service.getConversationObjectConversationId();
+ service.endConversation();
+ service.getState();
+ Assert.assertNotSame(firstID, service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 495-497 Verify:
+ * If ServiceReference.getConversationID() is called after the
+ * "@EndsConversation" method is called, but before the next conversation
+ * has been started, it will return null.
+ */
+ @Test
+ public void nullConversationIDAfterEndConversation() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ service.endConversationViaAnnotatedMethod();
+ Assert.assertNull(service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 495-497 Verify:
+ * If ServiceReference.getConversationID() is called after the
+ * "@EndsConversation" method is called, but before the next conversation
+ * has been started, it will return null. Note: Uses explicit set of Conversation ID
+ */
+ @Test
+ public void nullConversationIDAfterEndConversation1a() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.setConversationID("User provided ID");
+ service.getState();
+ service.endConversationViaAnnotatedMethod();
+ Assert.assertNull(service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 495-497 Verify: If
+ * ServiceReference.getConversationID() is called after the
+ * "@EndsConversationmethod" is called, but before the next conversation has
+ * been started, it will return null. Note: Uses Conversation.end() rather
+ * than "@EndsConversation"
+ */
+ @Test
+ public void nullConversationIDAfterEndConversation2() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.getState();
+ service.endConversation();
+ Assert.assertNull(service.getConversationObjectConversationId());
+ }
+
+ /**
+ * Java Common Annotations and APIs 1.00 Specification line 495-497 Verify: If
+ * ServiceReference.getConversationID() is called after the
+ * "@EndsConversationmethod" is called, but before the next conversation has
+ * been started, it will return null. Note: Uses Conversation.end() rather
+ * than "@EndsConversation". Note 2: Uses explicit set of Conversation ID
+ */
+ @Test
+ public void nullConversationIDAfterEndConversation2a() {
+ CService service = domain.getService(CService.class, "ConversationalCComponent");
+ service.setConversationID("User provided ID");
+ service.getState();
+ service.endConversation();
+ Assert.assertNull(service.getConversationObjectConversationId());
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationUniqueIdTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationUniqueIdTestCase.java
new file mode 100644
index 0000000000..431962221a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationUniqueIdTestCase.java
@@ -0,0 +1,71 @@
+/*
+ * 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.itest.conversational;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.TestResult;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ConversationUniqueIdTestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("ConversationUniqueId.composite");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testConversationUniqueId() {
+ Alpha alpha = domain.getService(Alpha.class, "Alpha");
+ int numConversations = 3;
+
+ for(int i = 0; i < numConversations; ++i) {
+ alpha.run(5);
+ }
+
+ // Wait for the conversations to complete
+ while (TestResult.getCompleted() < numConversations) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ Assert.assertEquals(TestResult.results.size(), numConversations);
+ for(Boolean value : TestResult.results.values()) {
+ Assert.assertTrue(value);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java
new file mode 100644
index 0000000000..cc31c77873
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java
@@ -0,0 +1,103 @@
+/*
+ * 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.itest.conversational;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.osoa.sca.ConversationEndedException;
+
+public class ConversationalAgeTestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ System.setProperty("org.apache.tuscany.sca.core.scope.ConversationalScopeContainer.ReaperInterval", "2");
+ domain = SCADomain.newInstance("ConversationAge.composite");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ System.clearProperty("org.apache.tuscany.sca.core.scope.ConversationalScopeContainer.ReaperInterval");
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testMaxAge() throws InterruptedException {
+
+ ConversationalService conversationalService =
+ domain.getService(ConversationalService.class, "ConversationAgeComponent");
+
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+ conversationalService.initializeCount(42);
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Thread.sleep(500);
+ try {
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ } catch (ConversationEndedException e) {
+ Assert.fail();
+ }
+ }
+
+ @Test
+ public void testAgeExpired() throws InterruptedException {
+
+ ConversationalService conversationalService =
+ domain.getService(ConversationalService.class, "ConversationAgeComponent");
+
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+ conversationalService.initializeCount(42);
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Thread.sleep(1100);
+ try {
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+ Assert.fail();
+ } catch (ConversationEndedException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testMaxIdle() throws InterruptedException {
+
+ ConversationalService conversationalService =
+ domain.getService(ConversationalService.class, "ConversationIdleComponent");
+
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+ conversationalService.initializeCount(42);
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Assert.assertEquals(42, conversationalService.retrieveCount());
+ Thread.sleep(1100);
+ try {
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+ } catch (ConversationEndedException e) {
+ // expected
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalJ2SETestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalJ2SETestCase.java
new file mode 100644
index 0000000000..8480e04028
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalJ2SETestCase.java
@@ -0,0 +1,84 @@
+/*
+ * 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.itest.conversational;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationalJ2SETestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("conversational.composite");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testStatefulConversation() {
+ ConversationalService conversationalService =
+ domain.getService(ConversationalService.class, "ConversationalServiceStateful");
+
+ conversationalService.initializeCount(1);
+ Assert.assertEquals(1, conversationalService.retrieveCount());
+ conversationalService.incrementCount();
+ Assert.assertEquals(2, conversationalService.retrieveCount());
+ conversationalService.endConversation();
+
+ Assert.assertEquals(0, conversationalService.retrieveCount());
+
+ conversationalService.initializeCount(4);
+ Assert.assertEquals(4, conversationalService.retrieveCount());
+ conversationalService.incrementCount();
+ Assert.assertEquals(5, conversationalService.retrieveCount());
+ conversationalService.endConversation();
+
+ }
+
+ @Test
+ public void testStatelessConversation() {
+ ConversationalService conversationalService =
+ domain.getService(ConversationalService.class, "ConversationalServiceStateless");
+
+ conversationalService.initializeCount(1);
+ Assert.assertEquals(1, conversationalService.retrieveCount());
+ conversationalService.incrementCount();
+ Assert.assertEquals(2, conversationalService.retrieveCount());
+ conversationalService.endConversation();
+
+ conversationalService.initializeCount(4);
+ Assert.assertEquals(4, conversationalService.retrieveCount());
+ conversationalService.incrementCount();
+ Assert.assertEquals(5, conversationalService.retrieveCount());
+ conversationalService.endConversation();
+
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
new file mode 100644
index 0000000000..da359bc296
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
@@ -0,0 +1,649 @@
+/*
+ * 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.itest.conversational;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalClientStatelessImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceRequestImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatefulNonConversationalCallbackImpl;
+import org.apache.tuscany.sca.itest.conversational.impl.ConversationalServiceStatelessImpl;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class ConversationalTestCase {
+
+ private static SCADomain domain;
+ private static ConversationalClient conversationalStatelessClientStatelessService;
+ private static ConversationalClient conversationalStatelessClientStatefulService;
+ private static ConversationalClient conversationalStatefulClientStatelessService;
+ private static ConversationalClient conversationalStatefulClientStatefulService;
+ private static ConversationalClient conversationalStatelessClientRequestService;
+ private static ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ try {
+ domain = SCADomain.newInstance("conversational.composite");
+
+ conversationalStatelessClientStatelessService = domain.getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatelessService");
+
+ conversationalStatelessClientStatefulService = domain.getService(ConversationalClient.class,
+ "ConversationalStatelessClientStatefulService");
+
+ conversationalStatefulClientStatelessService = domain.getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatelessService");
+
+ conversationalStatefulClientStatefulService = domain.getService(ConversationalClient.class,
+ "ConversationalStatefulClientStatefulService");
+ conversationalStatelessClientRequestService = domain.getService(ConversationalClient.class,
+ "ConversationalStatelessClientRequestService");
+ conversationalStatefulClientNonConversationalCallbackStatelessService = domain.getService(ConversationalClient.class,
+ "ConversationalStatefulClientNonConversationalCallbackStatefulService");
+
+ } catch(Exception ex) {
+ System.err.println(ex.toString());
+ }
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ domain.close();
+ }
+
+ private void resetCallStack() {
+
+ // reset the place where we record the sequence of calls passing
+ // through each component instance
+ ConversationalServiceStatelessImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ ConversationalClientStatefulImpl.calls = new StringBuffer();
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+
+ }
+
+ // stateless client stateful service tests
+ // =======================================
+ @Test
+ public void testStatelessStatefulConversationFromInjectedReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationFromServiceReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientStatefulService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientStatefulService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatelessClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatelessClientStatefulService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationHavingPassedReference() {
+ int count = conversationalStatelessClientStatefulService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationBusinessException() {
+ String message = conversationalStatelessClientStatefulService.runConversationBusinessException();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationBusinessExceptionCallback() {
+ String message = conversationalStatelessClientStatefulService.runConversationBusinessExceptionCallback();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientStatefulService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ // stateless client stateless service tests
+ // ========================================
+ @Test
+ public void testStatelessStatelessConversationFromInjectedReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationFromServiceReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+ @Test
+ public void testStatelessStatelessConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatelessClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatelessClientStatelessService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+ //@Test
+ public void testStatelessStatelessConversationHavingPassedReference() {
+ int count = conversationalStatelessClientStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessStatelessConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessStatelessConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ // stateful client stateful service tests
+ // ======================================
+ @Test
+ public void testStatefulStatefulConversationFromInjectedReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationFromServiceReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientStatefulService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientStatefulService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatefulClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatefulClientStatefulService.runConversationWithCallback();
+ Assert.assertEquals(4, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalClientStatefulImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulStatefulConversationHavingPassedReference() {
+ int count = conversationalStatefulClientStatefulService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ @Test
+ public void testStatefulStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientStatefulService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ // stateful client stateless service tests
+ // =======================================
+ @Test
+ public void testStatefulStatelessConversationFromInjectedReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationFromServiceReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatefulClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatefulClientStatelessService.runConversationWithCallback();
+ Assert.assertEquals(4, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalClientStatefulImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulStatelessConversationHavingPassedReference() {
+ int count = conversationalStatefulClientStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ @Test
+ public void testStatefulStatelessConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ // stateless client request scope service tests
+ // ============================================
+ @Test
+ public void testStatelessRequestConversationFromInjectedReference() {
+ int count = conversationalStatelessClientRequestService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationFromInjectedReference2() {
+ int count = conversationalStatelessClientRequestService.runConversationFromInjectedReference2();
+ Assert.assertEquals(1, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationFromServiceReference() {
+ int count = conversationalStatelessClientRequestService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithUserDefinedConversationId() {
+ int count = conversationalStatelessClientRequestService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatelessClientRequestService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCheckingScope() {
+ resetCallStack();
+ ConversationalServiceRequestImpl.calls = new StringBuffer();
+ conversationalStatelessClientRequestService.runConversationCheckingScope();
+ Assert.assertEquals("initializeCount,incrementCount,retrieveCount,endConversation,",
+ ConversationalServiceRequestImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithCallback() {
+ resetCallStack();
+ ConversationalClientStatelessImpl.calls = new StringBuffer();
+ int count = conversationalStatelessClientRequestService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,destroy,",
+ ConversationalClientStatelessImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatelessRequestConversationHavingPassedReference() {
+ int count = conversationalStatelessClientRequestService.runConversationHavingPassedReference();
+ Assert.assertEquals(3, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationBusinessException() {
+ String message = conversationalStatelessClientRequestService.runConversationBusinessException();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessRequestConversationBusinessExceptionCallback() {
+ String message = conversationalStatelessClientRequestService.runConversationBusinessExceptionCallback();
+ Assert.assertEquals("Business Exception", message);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversation() {
+ int count = conversationalStatelessClientRequestService.runConversationCallingEndedConversation();
+ Assert.assertEquals(-999, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversationCallback() {
+ int count = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatelessRequestConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ //@Test
+ public void testStatelessRequestConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatelessClientRequestService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ // stateful client non conversational callback stateful service tests
+ // ==================================================================
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromInjectedReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromInjectedReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromInjectedReference2() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromInjectedReference2();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationFromServiceReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationFromServiceReference();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithUserDefinedConversationId() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationWithUserDefinedConversationId();
+ Assert.assertEquals(2, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCheckUserDefinedConversationId() {
+ String conversationId = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckUserDefinedConversationId();
+ Assert.assertEquals("MyConversation2", conversationId);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCheckingScope() {
+ resetCallStack();
+ conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithCallback() {
+ resetCallStack();
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationWithCallback();
+ Assert.assertEquals(0, count);
+
+ Assert.assertEquals("init,runConversationWithCallback,init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalClientStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ //@Test
+ public void testStatefulNonConversationalCallbackStatefulConversationHavingPassedReference() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationHavingPassedReference();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversation() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversation();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCallback() {
+ int count = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCallback();
+ Assert.assertEquals(0, count);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCheckConversationId() {
+ String id = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCheckConversationId();
+ Assert.assertEquals(null, id);
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationCallingEndedConversationCallbackCheckConversationId() {
+ String id = conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCallingEndedConversationCallbackCheckConversationId();
+ Assert.assertEquals("MyConversation3", id);
+ }
+
+ private static final String NEW_A_VALUE = "First Instance - TestCode Set state on A";
+ private static final String NEW_B_VALUE = "First Instance - TestCode Set state on B";
+ private static final String SECOND_NEW_A_VALUE = "Second Instance - TestCode Set state on A";
+ private static final String SECOND_NEW_B_VALUE = "Second Instance - TestCode Set state on B";
+
+ @Test
+ public void testMultipleConversations() {
+ //////////
+ // Tests on first instance
+ //////////
+ System.out.println("========= First instance tests =========");
+ AService aService = domain.getService(AService.class, "ConversationalAComponent");
+
+ // Make sure initial values are correct
+ Assert.assertEquals(Constants.A_INITIAL_VALUE, aService.getState());
+ Assert.assertEquals(Constants.B_INITIAL_VALUE, aService.getStateOnB());
+
+ // Set some new values
+ aService.setState(NEW_A_VALUE);
+ aService.setStateOnB(NEW_B_VALUE);
+
+ // Verify the set worked
+ Assert.assertEquals(NEW_A_VALUE, aService.getState());
+ Assert.assertEquals(NEW_B_VALUE, aService.getStateOnB());
+
+
+ //////////
+ // Tests on second instance
+ //////////
+ System.out.println("========= Second instance tests =========");
+
+ // Do another look up
+ AService aService2 = domain.getService(AService.class, "ConversationalAComponent");
+
+ // Make sure initial values are correct on the second instance
+ Assert.assertEquals(Constants.A_INITIAL_VALUE, aService2.getState());
+ Assert.assertEquals(Constants.B_INITIAL_VALUE, aService2.getStateOnB());
+
+ // Set some new values on the second instance
+ aService2.setState(SECOND_NEW_A_VALUE);
+ aService2.setStateOnB(SECOND_NEW_B_VALUE);
+
+ // Verify the set worked on the second instance
+ Assert.assertEquals(SECOND_NEW_A_VALUE, aService2.getState());
+ Assert.assertEquals(SECOND_NEW_B_VALUE, aService2.getStateOnB());
+
+ // Verify the values have not been changed on the first instance
+ Assert.assertEquals(NEW_A_VALUE, aService.getState());
+ Assert.assertEquals(NEW_B_VALUE, aService.getStateOnB());
+
+ System.out.println("========= Done instance tests =========");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/pom.xml b/tags/java/sca/1.5.1-RC2/itest/corba/pom.xml
new file mode 100644
index 0000000000..ac07e651b2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/pom.xml
@@ -0,0 +1,168 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.5.1
+ ../pom.xml
+
+ itest-corba-binding
+ Apache Tuscany SCA iTest CORBA Binding
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.5.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-corba-runtime
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-corba-jse
+ 1.5.1
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-corba-jse-tns
+ 1.5.1
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-sca
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-sca-corba
+ 1.5.1
+ runtime
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ 1.5.1
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.5.1
+
+
+
+ junit
+ junit
+ 4.5
+ test
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.0
+
+
+ add-source
+ generate-sources
+
+ add-test-source
+
+
+
+ target/sdo-source
+
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.1.1
+
+
+ generate-scenariofour-sdo
+ generate-sources
+
+
+ ${basedir}/src/test/resources/scenariofour.xsd
+
+
+ org.apache.tuscany.sca.test.corba.scenariofour
+
+ ScenarioFour
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
new file mode 100644
index 0000000000..46e214eac3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFiveTestCase.java
@@ -0,0 +1,51 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.fail;
+
+import org.apache.tuscany.sca.host.corba.jse.tns.TnsDefaultCorbaHost;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFive;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFiveComponent;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ * Tests usage of TNS JSE Corba host
+ */
+public class ScenarioFiveTestCase {
+
+ @Test
+ public void test_providedNameServer() {
+ TestCorbaHost.setCorbaHost(new TnsDefaultCorbaHost());
+ try {
+ // just make sure we can obtain and use the reference with success
+ SCADomain domain = SCADomain.newInstance("ScenarioFive.composite");
+ ScenarioFive scenarioFive =
+ domain.getService(ScenarioFiveComponent.class, "ScenarioFive").getScenarioFive();
+ scenarioFive.doNothing();
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
new file mode 100644
index 0000000000..cba8c823e8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioFourTestCase.java
@@ -0,0 +1,149 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameServer;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameService;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.scenariofour.ScenarioFourFactory;
+import org.apache.tuscany.sca.test.corba.scenariofour.ScenarioFourSdo;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFour;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFourComponent;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFourException;
+import org.apache.tuscany.sca.test.corba.types.ScenarioFourStruct;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ * Tests SCA default binding over CORBA binding
+ */
+public class ScenarioFourTestCase {
+
+ // note that those values are also used in resources/*.composite file
+ private static SCADomain domain;
+ private static ScenarioFourComponent scenarioFourComponent;
+ private static ScenarioFour scenarioFour;
+ private static TransientNameServer server;
+ private static final int ORB_INITIAL_PORT = 5080;
+
+ /**
+ * Initial configuration
+ */
+ @BeforeClass
+ public static void setUp() {
+ TestCorbaHost.setCorbaHost(new DefaultCorbaHost());
+ try {
+ server = new TransientNameServer("localhost", ORB_INITIAL_PORT, TransientNameService.DEFAULT_SERVICE_NAME);
+ Thread t = server.start();
+ if (t == null) {
+ Assert.fail("The naming server cannot be started");
+ }
+ // obtain domain
+ domain = SCADomain.newInstance("ScenarioFour.composite");
+ scenarioFourComponent = domain.getService(ScenarioFourComponent.class, "ScenarioFour");
+ scenarioFour = scenarioFourComponent.getScenarioFour();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Test cleanup
+ */
+ @AfterClass
+ public static void tearDown() {
+ server.stop();
+ }
+
+ /**
+ * General tests for passing JAXB objects
+ */
+ @Test
+ public void test_generalJAXB() {
+ try {
+ ScenarioFourStruct input = new ScenarioFourStruct();
+ input.field1 = "Test";
+ input.field2 = 1;
+ input.field3 = new double[1];
+ ScenarioFourStruct output = scenarioFour.setStruct(input);
+ assertTrue(input.equals(output));
+ } catch (Exception e) {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ }
+
+ /**
+ * Test for JAXB exceptions
+ */
+ @Test
+ public void test_exceptionsJAXB() {
+ try {
+ scenarioFour.exceptionTest();
+ fail();
+ } catch (ScenarioFourException e) {
+ assertTrue(ScenarioFourException.DEFAULT_CONTENT.equals(e.getContent()));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * General test for passing SDO objects
+ */
+ @Test
+ public void test_generalSDO() {
+ try {
+ ScenarioFourSdo scenarioFourSdo = ScenarioFourFactory.INSTANCE.createScenarioFourSdo();
+ scenarioFourSdo.setMessage("Test1");
+ scenarioFourSdo.setSymbol("Test2");
+ ScenarioFourSdo result = scenarioFour.passScenarioFourStruct(scenarioFourSdo);
+ assertTrue(scenarioFourSdo.getMessage().equals(result.getMessage()) && scenarioFourSdo.getSymbol()
+ .equals(result.getSymbol()));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests reusing local name server with multiple bindings
+ */
+ @Test
+ public void test_nameServerReuse() {
+ try {
+ ScenarioFour scenarioFour =
+ domain.getService(ScenarioFourComponent.class, "ScenarioFourReuse").getScenarioFour();
+ ScenarioFourStruct struct = new ScenarioFourStruct();
+ scenarioFour.setStruct(struct);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioOneTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioOneTestCase.java
new file mode 100644
index 0000000000..0135c04495
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioOneTestCase.java
@@ -0,0 +1,371 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameServer;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameService;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.generated.Color;
+import org.apache.tuscany.sca.test.corba.generated.InnerStruct;
+import org.apache.tuscany.sca.test.corba.generated.RichStruct;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioOne;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioOneHelper;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioOneOperations;
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+import org.apache.tuscany.sca.test.corba.types.ScenarioOneServant;
+import org.apache.tuscany.sca.test.corba.types.TColor;
+import org.apache.tuscany.sca.test.corba.types.TInnerStruct;
+import org.apache.tuscany.sca.test.corba.types.TRichStruct;
+import org.apache.tuscany.sca.test.corba.types.TScenarioOne;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.omg.CORBA.ORB;
+import org.omg.CosNaming.NameComponent;
+import org.omg.CosNaming.NamingContext;
+import org.omg.CosNaming.NamingContextHelper;
+
+/**
+ * @version $Rev$ $Date$
+ * This test class contains three main tests:
+ * 1. Tuscany is being used as a consumer of some non-Tuscany CORBA service
+ * 2. Tuscany is being used as a service provider, which will be consumed by
+ * non-Tuscany CORBA client
+ * 3. Tuscany is being used as a service provider, which will be consumed by
+ * Tuscany client
+ * But that's not all, there are some other variations. Tuscany CORBA binding
+ * supports using Java interface generated by IDLJ, also it supports interfaces
+ * provided by user - I combined those cases in each test.
+ */
+public class ScenarioOneTestCase {
+
+ // note that those values are also used in resources/*.composite file
+ private static int ORB_INITIAL_PORT = 5060;
+ private static String SERVICE_NAME = "ScenarioOne";
+
+ private static SCADomain domain;
+
+ private static TransientNameServer server;
+ private static ORB orb;
+
+ /**
+ * Sets up name service, creates and registers traditional CORBA service,
+ * obtains SCADomain
+ */
+ @BeforeClass
+ public static void setUp() {
+ TestCorbaHost.setCorbaHost(new DefaultCorbaHost());
+ try {
+ try {
+ server =
+ new TransientNameServer("localhost", ORB_INITIAL_PORT, TransientNameService.DEFAULT_SERVICE_NAME);
+ Thread t = server.start();
+ if (t == null) {
+ Assert.fail("The naming server cannot be started");
+ }
+ orb = server.getORB();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioOne scenarioOne = new ScenarioOneServant();
+ ncRef.rebind(path, scenarioOne);
+ // obtain domain
+ domain = SCADomain.newInstance("ScenarioOne.composite");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Kills previously spawned name service.
+ */
+ @AfterClass
+ public static void tearDown() {
+ server.stop();
+ }
+
+ /**
+ * Creates nicely filled structure for user provided interface.
+ *
+ * @return
+ */
+ private static TRichStruct getTRichStruct() {
+ int[][] intArr = new int[][] { {1, 2}, {3, 4}};
+ TInnerStruct innerStruct = new TInnerStruct(intArr, "Test", TColor.green);
+ String[] strSeq = {"i", "Test"};
+ return new TRichStruct(innerStruct, strSeq, 1);
+
+ }
+
+ /**
+ * Creates nicely filled structure for generated interface.
+ *
+ * @return
+ */
+ private static RichStruct getRichStruct() {
+ int[][] intArr = new int[][] { {1, 2}, {3, 4}};
+ InnerStruct innerStruct2 = new InnerStruct(intArr, "Test", Color.green);
+ String[] strSeq = {"i", "Test"};
+ return new RichStruct(innerStruct2, strSeq, 1);
+ }
+
+ /**
+ * Compares String arrays
+ *
+ * @param arg1
+ * @param arg2
+ * @return
+ */
+ private boolean areSrringArraysEqual(String[] arg1, String[] arg2) {
+ try {
+ for (int i = 0; i < arg1.length; i++) {
+ if (!arg1[i].equals(arg2[i])) {
+ return false;
+ }
+ }
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Compares two dimensional int arrays
+ *
+ * @param arg1
+ * @param arg2
+ * @return
+ */
+ private boolean areTwoDimIntArraysEqual(int[][] arg1, int[][] arg2) {
+ try {
+ for (int i = 0; i < arg1.length; i++) {
+ for (int j = 0; j < arg1[i].length; j++) {
+ if (arg1[i][j] != arg2[i][j]) {
+ return false;
+ }
+ }
+ }
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ private boolean equalTo(TInnerStruct arg1, TInnerStruct arg2) {
+ return (arg1.color.value() == arg2.color.value() && arg1.stringField.equals(arg2.stringField) && areTwoDimIntArraysEqual(arg1.twoDimLongSequence,
+ arg2.twoDimLongSequence));
+ }
+
+ private boolean equalTo(InnerStruct arg1, InnerStruct arg2) {
+ return (arg1.color.value() == arg2.color.value() && arg1.stringField.equals(arg2.stringField) && areTwoDimIntArraysEqual(arg1.twoDimLongSequence,
+ arg2.twoDimLongSequence));
+ }
+
+ private boolean equalTo(TRichStruct arg1, TRichStruct arg2) {
+ return (equalTo(arg1.innerStruct, arg2.innerStruct) && arg2.longField == arg1.longField && areSrringArraysEqual(arg1.stringSequence,
+ arg2.stringSequence));
+ }
+
+ private boolean equalTo(RichStruct arg1, RichStruct arg2) {
+ return (equalTo(arg1.innerStruct, arg2.innerStruct) && arg2.longField == arg1.longField && areSrringArraysEqual(arg1.stringSequence,
+ arg2.stringSequence));
+ }
+
+ /**
+ * Helper method used several times for various components. Executes several
+ * tests using Tuscany reference binding. This helper uses generated Java
+ * interface.
+ *
+ * @param componentName
+ */
+ private void testClientUsingGeneratedInterface(String componentName) {
+ ScenarioOneOperations component = domain.getService(ScenarioOneOperations.class, componentName);
+ RichStruct richStruct = getRichStruct();
+
+ try {
+ RichStruct result = component.setRichStruct(richStruct);
+ assertTrue(equalTo(result, richStruct));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ try {
+ richStruct.longField = 0;
+ component.setRichStruct(richStruct);
+ fail();
+ } catch (Exception e) {
+ assertTrue(e instanceof UnexpectedException);
+ }
+
+ try {
+ richStruct.longField = 1;
+ richStruct.innerStruct.color = Color.red;
+ component.setRichStruct(richStruct);
+ } catch (Exception e) {
+ assertTrue(e instanceof WrongColor);
+ }
+ }
+
+ /**
+ * Helper method used several times for various components. Executes several
+ * tests using Tuscany reference binding. This helper uses user provided
+ * Java interface.
+ *
+ * @param componentName
+ */
+ private void testClientUsingUserProvidedInterface(String componentName) {
+ TScenarioOne component = domain.getService(TScenarioOne.class, componentName);
+ TRichStruct tRichStruct = getTRichStruct();
+
+ try {
+ TRichStruct result = component.setRichStruct(tRichStruct);
+ assertTrue(equalTo(result, tRichStruct));
+ } catch (Exception e) {
+ fail();
+ }
+
+ try {
+ tRichStruct.longField = 0;
+ component.setRichStruct(tRichStruct);
+ fail();
+ } catch (Exception e) {
+ assertTrue(e instanceof UnexpectedException);
+ }
+
+ try {
+ tRichStruct.longField = 1;
+ tRichStruct.innerStruct.color = TColor.red;
+ component.setRichStruct(tRichStruct);
+ } catch (Exception e) {
+ assertTrue(e instanceof WrongColor);
+ }
+ }
+
+ public void testServiceUsingGeneratedClient(String serviceName) {
+ try {
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(serviceName, "");
+ NameComponent path[] = {nc};
+ ScenarioOne so = ScenarioOneHelper.narrow(ncRef.resolve(path));
+
+ RichStruct richStruct = getRichStruct();
+ RichStruct result = so.setRichStruct(richStruct);
+ assertTrue(equalTo(result, richStruct));
+
+ try {
+ richStruct.innerStruct.color = Color.red;
+ result = so.setRichStruct(richStruct);
+ fail();
+ } catch (Exception e) {
+ assertTrue(e instanceof WrongColor);
+ }
+
+ try {
+ richStruct.innerStruct.color = Color.green;
+ richStruct.longField = 0;
+ result = so.setRichStruct(richStruct);
+ fail();
+ } catch (Exception e) {
+ assertTrue(e instanceof UnexpectedException);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Service is exposed in traditional way (using CORBA API from JDK).
+ * Reference is obtained from Tuscany.
+ */
+ @Test
+ public void test_TraditionalService_TuscanyClient() {
+
+ // Client is using user provided interface
+ testClientUsingUserProvidedInterface("ScenarioOne");
+
+ // Client is using generated interface
+ testClientUsingGeneratedInterface("ScenarioOneGenerated");
+ }
+
+ /**
+ * Service is exposed by Tuscany. Reference is obtained in traditional way.
+ * (using CORBA API from JDK)
+ *
+ * @throws Exception
+ */
+ @Test
+ public void test_TuscanyService_TraditionalClient() throws Exception {
+
+ // tests service which uses user provided interface
+ testServiceUsingGeneratedClient("ScenarioOneTuscany");
+
+ // tests service which uses generated interface
+ testServiceUsingGeneratedClient("ScenarioOneTuscanyGenerated");
+ }
+
+ /**
+ * Service is exposed by Tuscany. Reference is obtained from Tuscany. There
+ * are 4 combinations (basing on if we are using generated or user provided
+ * interfaces, both on service and reference side).
+ */
+ @Test
+ public void test_TuscanyService_TuscanyClient() {
+
+ // Client is using user provided interface, service is using user
+ // provided interface.
+ testClientUsingUserProvidedInterface("TU2TS1");
+
+ // Client is using user provided interface, service is using generated
+ // interface.
+ testClientUsingUserProvidedInterface("TU2TS2");
+
+ // Client is using generated interface, service is using user provided
+ // interface.
+ testClientUsingGeneratedInterface("TG2TS1");
+
+ // Client is using generated interface, service is using generated
+ // interface.
+ testClientUsingGeneratedInterface("TG2TS2");
+ }
+
+ /**
+ * Tests using reference obtained by corbaname URI
+ */
+ @Test
+ public void test_serviceAndReferenceByURI() {
+ testClientUsingUserProvidedInterface("UriBinding");
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioSixTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioSixTestCase.java
new file mode 100644
index 0000000000..b7309d68a0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioSixTestCase.java
@@ -0,0 +1,228 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameServer;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameService;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct;
+import org.apache.tuscany.sca.test.corba.generated.InnerUnion;
+import org.apache.tuscany.sca.test.corba.generated.RichUnion;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioSix;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioSixHelper;
+import org.apache.tuscany.sca.test.corba.types.ScenarioSixServant;
+import org.apache.tuscany.sca.test.corba.types.TAnnotatedStruct;
+import org.apache.tuscany.sca.test.corba.types.TInnerUnion;
+import org.apache.tuscany.sca.test.corba.types.TRichUnion;
+import org.apache.tuscany.sca.test.corba.types.TScenarioSix;
+import org.apache.tuscany.sca.test.corba.types.TScenarioSixComponent;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.omg.CORBA.ORB;
+import org.omg.CosNaming.NameComponent;
+import org.omg.CosNaming.NamingContext;
+import org.omg.CosNaming.NamingContextHelper;
+
+/**
+ * Tests using enhanced Java interfaces (annotations)
+ *
+ * @version $Rev$ $Date$
+ */
+public class ScenarioSixTestCase {
+
+ // note that those values are also used in resources/*.composite file
+ private static int ORB_INITIAL_PORT = 5050;
+ private static String SERVICE_NAME = "ScenarioSix";
+ private static String TUSCANY_SERVICE_NAME = "ScenarioSixTuscany";
+
+ private static SCADomain domain;
+
+ private static TransientNameServer server;
+ private static ORB orb;
+
+ /**
+ * Sets up name service, creates and registers traditional CORBA service,
+ * obtains SCADomain
+ */
+ @BeforeClass
+ public static void setUp() {
+ TestCorbaHost.setCorbaHost(new DefaultCorbaHost());
+ try {
+ try {
+ server =
+ new TransientNameServer("localhost", ORB_INITIAL_PORT, TransientNameService.DEFAULT_SERVICE_NAME);
+ Thread t = server.start();
+ if (t == null) {
+ Assert.fail("The naming server cannot be started");
+ }
+ orb = server.getORB();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioSix scenarioSix = new ScenarioSixServant();
+ ncRef.rebind(path, scenarioSix);
+ // obtain domain
+ domain = SCADomain.newInstance("ScenarioSix.composite");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Kills previously spawned name service.
+ */
+ @AfterClass
+ public static void tearDown() {
+ server.stop();
+ }
+
+ private boolean areArraysEqual(String[][] arr1, String[][] arr2) {
+ for (int i = 0; i < arr1.length; i++) {
+ for (int j = 0; j < arr1[i].length; j++) {
+ if (!arr1[i][j].equals(arr2[i][j])) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private String[][] getStringArray() {
+ String[][] result = { {"Hello", "World"}, {"Hi", "Again"}};
+ return result;
+ }
+
+ /**
+ * Tests passing arrays. Tuscany acts as a client, servant object is served
+ * in a traditional way
+ */
+ @Test
+ public void test_arraysPassing_tuscanyAsClient() {
+ try {
+ TScenarioSix ref = domain.getService(TScenarioSixComponent.class, "ScenarioSix").getScenarioSix();
+ String[][] arrayArg = getStringArray();
+ String[][] arrayRes = ref.passStringArray(arrayArg);
+ assertTrue(areArraysEqual(arrayArg, arrayRes));
+ TAnnotatedStruct structArg = new TAnnotatedStruct();
+ structArg.stringArray = getStringArray();
+ TAnnotatedStruct structRes = ref.passAnnotatedStruct(structArg);
+ assertTrue(areArraysEqual(structArg.stringArray, structRes.stringArray));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests passing arrays. Servant object is served by Tuscany and it is
+ * accessed by traditional Corba client
+ */
+ @Test
+ public void test_arraysPassing_tuscanyAsService() {
+ try {
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(TUSCANY_SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioSix ref = ScenarioSixHelper.narrow(ncRef.resolve(path));
+ String[][] stringArg = getStringArray();
+ String[][] stringRes = ref.passStringArray(stringArg);
+ assertTrue(areArraysEqual(stringArg, stringRes));
+ AnnotatedStruct structArg = new AnnotatedStruct();
+ structArg.stringArray = getStringArray();
+ AnnotatedStruct structRes = ref.passAnnotatedStruct(structArg);
+ assertTrue(areArraysEqual(structArg.stringArray, structRes.stringArray));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests passing unions. Tuscany acts as a client, servant object is served
+ * in a traditional way
+ */
+ @Test
+ public void test_unionsPassing_tuscanyAsClient() {
+ try {
+ TScenarioSix ref = domain.getService(TScenarioSixComponent.class, "ScenarioSix").getScenarioSix();
+ TRichUnion arg = new TRichUnion();
+ TInnerUnion inner = new TInnerUnion();
+ inner.setY(10f);
+ arg.setIu(inner);
+ TRichUnion result = ref.passRichUnion(arg);
+ assertEquals(arg.getIu().getY(), result.getIu().getY(), 0.0f);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ try {
+ TScenarioSix ref = domain.getService(TScenarioSixComponent.class, "ScenarioSix").getScenarioSix();
+ TRichUnion arg = new TRichUnion();
+ arg.setY(15f);
+ TRichUnion result = ref.passRichUnion(arg);
+ assertEquals(arg.getY(), result.getY(), 0.0f);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests passing unions. Servant object is served by Tuscany and it is
+ * accessed by traditional Corba client
+ */
+ @Test
+ public void test_unionsPassing_tuscanyAsService() {
+ try {
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(TUSCANY_SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioSix ref = ScenarioSixHelper.narrow(ncRef.resolve(path));
+ RichUnion arg = new RichUnion();
+ InnerUnion inner = new InnerUnion();
+ inner.y(20f);
+ arg.iu(inner);
+ RichUnion result = ref.passRichUnion(arg);
+ assertEquals(arg.iu().y(), result.iu().y(), 0.0f);
+ arg = new RichUnion();
+ arg.y(15f);
+ result = ref.passRichUnion(arg);
+ assertEquals(arg.y(), result.y(), 0.0f);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioThreeTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioThreeTestCase.java
new file mode 100644
index 0000000000..a738c6f211
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioThreeTestCase.java
@@ -0,0 +1,130 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameServer;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameService;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.types.TScenarioThree;
+import org.apache.tuscany.sca.test.corba.types.TScenarioThreeComponent;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ * Tests various mapping scenarios.
+ */
+public class ScenarioThreeTestCase {
+
+ // note that those values are also used in resources/*.composite file
+ private static int ORB_INITIAL_PORT = 5060;
+ private static SCADomain domain;
+ private static TransientNameServer server;
+
+ /**
+ * Sets up name service, creates and registers traditional CORBA service,
+ * obtains SCADomain
+ */
+ @BeforeClass
+ public static void setUp() {
+ TestCorbaHost.setCorbaHost(new DefaultCorbaHost());
+ try {
+ try {
+ server =
+ new TransientNameServer("localhost", ORB_INITIAL_PORT, TransientNameService.DEFAULT_SERVICE_NAME);
+ Thread t = server.start();
+ if (t == null) {
+ Assert.fail("The naming server cannot be started");
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ // obtain domain
+ domain = SCADomain.newInstance("ScenarioThree.composite");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Kills previously spawned name service.
+ */
+ @AfterClass
+ public static void tearDown() {
+ server.stop();
+ }
+
+ /**
+ * Tests mapping for getters and setters
+ */
+ @Test
+ public void test_getterSetter() {
+ try {
+ TScenarioThree ref =
+ domain.getService(TScenarioThreeComponent.class, "ScenarioThreeReference").getScenarioThree();
+ ref.getIntField();
+ ref.setIntField(1);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests mapping the same operation names but with different cases
+ */
+ @Test
+ public void test_nameCase() {
+ try {
+ TScenarioThree ref =
+ domain.getService(TScenarioThreeComponent.class, "ScenarioThreeReference").getScenarioThree();
+ assertEquals(0, ref.caseDifferent());
+ assertEquals(1, ref.CaseDifferent());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests mappings for operations with overloaded names
+ */
+ @Test
+ public void test_overloadedNames() {
+ try {
+ TScenarioThree ref =
+ domain.getService(TScenarioThreeComponent.class, "ScenarioThreeReference").getScenarioThree();
+ ref.overloadedName();
+ ref.overloadedName("");
+ ref.overloadedName("", 0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioTwoTestCase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioTwoTestCase.java
new file mode 100644
index 0000000000..008212bdbe
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/ScenarioTwoTestCase.java
@@ -0,0 +1,139 @@
+/*
+ * 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.test.corba;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameServer;
+import org.apache.tuscany.sca.host.corba.naming.TransientNameService;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioTwo;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioTwoHelper;
+import org.apache.tuscany.sca.test.corba.types.ScenarioTwoServant;
+import org.apache.tuscany.sca.test.corba.types.TScenarioTwo;
+import org.apache.tuscany.sca.test.corba.types.TScenarioTwoComponent;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.omg.CORBA.ORB;
+import org.omg.CosNaming.NameComponent;
+import org.omg.CosNaming.NamingContext;
+import org.omg.CosNaming.NamingContextHelper;
+
+/**
+ * @version $Rev$ $Date$
+ * Tests attribute get/set mapping using cooperation between traditional CORBA
+ * and Tuscany CORBA
+ */
+public class ScenarioTwoTestCase {
+
+ // note that those values are also used in resources/*.composite file
+ private static int ORB_INITIAL_PORT = 5060;
+
+ private static SCADomain domain;
+
+ private static TransientNameServer server;
+ private static ORB orb;
+ private static String TUSCANY_SERVICE_NAME = "ScenarioTwo";
+ private static String GENERATED_SERVICE_NAME = "ScenarioTwoGenerated";
+
+ /**
+ * Sets up name service, creates and registers traditional CORBA service,
+ * obtains SCADomain
+ */
+ @BeforeClass
+ public static void setUp() {
+ TestCorbaHost.setCorbaHost(new DefaultCorbaHost());
+ try {
+ try {
+ server =
+ new TransientNameServer("localhost", ORB_INITIAL_PORT, TransientNameService.DEFAULT_SERVICE_NAME);
+ Thread t = server.start();
+ if (t == null) {
+ Assert.fail("The naming server cannot be started");
+ }
+ orb = server.getORB();
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(GENERATED_SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioTwo scenarioTwo = new ScenarioTwoServant();
+ ncRef.rebind(path, scenarioTwo);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ Assert.fail(e.getMessage());
+ }
+ // obtain domain
+ domain = SCADomain.newInstance("ScenarioTwo.composite");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Kills previously spawned name service.
+ */
+ @AfterClass
+ public static void tearDown() {
+ server.stop();
+ }
+
+ /**
+ * Tests using objects attribute (which is server in traditional way) by
+ * Tuscany CORBA binding
+ */
+ @Test
+ public void test_tuscanyGetSetAttribute() {
+ try {
+ TScenarioTwo ref = domain.getService(TScenarioTwoComponent.class, "ScenarioTwo").getScenarioTwo();
+ String strVal = "Whatever";
+ ref.setStringField(strVal);
+ assertEquals(strVal, ref.getStringField());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests using objects attribute (which is served by Tuscany) in traditional
+ * way (by idlj generated code)
+ */
+ @Test
+ public void test_getneratedGetSetAttribute() {
+ try {
+ orb = server.getORB();
+ org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
+ NamingContext ncRef = NamingContextHelper.narrow(objRef);
+ NameComponent nc = new NameComponent(TUSCANY_SERVICE_NAME, "");
+ NameComponent path[] = {nc};
+ ScenarioTwo st = ScenarioTwoHelper.narrow(ncRef.resolve(path));
+ st.stringField("");
+ assertEquals("", st.stringField());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHost.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHost.java
new file mode 100644
index 0000000000..bd1ce8cb49
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHost.java
@@ -0,0 +1,56 @@
+/*
+ * 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.test.corba;
+
+import org.apache.tuscany.sca.host.corba.CorbaHost;
+import org.apache.tuscany.sca.host.corba.CorbaHostException;
+import org.apache.tuscany.sca.host.corba.jse.DefaultCorbaHost;
+import org.omg.CORBA.Object;
+
+/**
+ * @version $Rev$ $Date$
+ * Mock Corba host which proxies to configured Corba host
+ */
+public class TestCorbaHost implements CorbaHost {
+
+ private static CorbaHost corbaHost = new DefaultCorbaHost();
+
+ /**
+ * Configures environment to use given Corba host
+ *
+ * @param corbaHost Corba host to use
+ */
+ public static void setCorbaHost(CorbaHost corbaHost) {
+ TestCorbaHost.corbaHost = corbaHost;
+ }
+
+ public Object lookup(String arg0) throws CorbaHostException {
+ return TestCorbaHost.corbaHost.lookup(arg0);
+ }
+
+ public void registerServant(String arg0, Object arg1) throws CorbaHostException {
+ TestCorbaHost.corbaHost.registerServant(arg0, arg1);
+ }
+
+ public void unregisterServant(String arg0) throws CorbaHostException {
+ TestCorbaHost.corbaHost.unregisterServant(arg0);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHostModuleActivator.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHostModuleActivator.java
new file mode 100644
index 0000000000..c25372c837
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/TestCorbaHostModuleActivator.java
@@ -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 org.apache.tuscany.sca.test.corba;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ModuleActivator;
+import org.apache.tuscany.sca.host.corba.CorbaHostExtensionPoint;
+
+/**
+ * @version $Rev$ $Date$
+ * Registers TestCorbaHost as a Corba host extension.
+ */
+public class TestCorbaHostModuleActivator implements ModuleActivator {
+
+ public void start(ExtensionPointRegistry extensionPointRegistry) {
+ CorbaHostExtensionPoint chep = extensionPointRegistry.getExtensionPoint(CorbaHostExtensionPoint.class);
+ chep.getCorbaHosts().add(0, new TestCorbaHost());
+ }
+
+ public void stop(ExtensionPointRegistry extensionPointRegistry) {
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStruct.java
new file mode 100644
index 0000000000..82b327f11c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStruct.java
@@ -0,0 +1,43 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/AnnotatedStruct.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+public final class AnnotatedStruct implements org.omg.CORBA.portable.IDLEntity
+{
+ public String stringArray[][] = null;
+
+ public AnnotatedStruct ()
+ {
+ } // ctor
+
+ public AnnotatedStruct (String[][] _stringArray)
+ {
+ stringArray = _stringArray;
+ } // ctor
+
+} // class AnnotatedStruct
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHelper.java
new file mode 100644
index 0000000000..010dea1e1a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHelper.java
@@ -0,0 +1,97 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+abstract public class AnnotatedStructHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/AnnotatedStruct/AnnotatedStruct:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [1];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_array_tc (2, _tcOf_members0 );
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_array_tc (2, _tcOf_members0 );
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.id (), "StringArray", _tcOf_members0);
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "stringArray",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.id (), "AnnotatedStruct", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct value = new org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct ();
+ value.stringArray = org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.read (istream);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct value)
+ {
+ org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.write (ostream, value.stringArray);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHolder.java
new file mode 100644
index 0000000000..67acde6682
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/AnnotatedStructHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+public final class AnnotatedStructHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct value = null;
+
+ public AnnotatedStructHolder ()
+ {
+ }
+
+ public AnnotatedStructHolder (org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/Color.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/Color.java
new file mode 100644
index 0000000000..1a2c30ee62
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/Color.java
@@ -0,0 +1,61 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/Color.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public class Color implements org.omg.CORBA.portable.IDLEntity
+{
+ private int __value;
+ private static int __size = 3;
+ private static org.apache.tuscany.sca.test.corba.generated.Color[] __array = new org.apache.tuscany.sca.test.corba.generated.Color [__size];
+
+ public static final int _red = 0;
+ public static final org.apache.tuscany.sca.test.corba.generated.Color red = new org.apache.tuscany.sca.test.corba.generated.Color(_red);
+ public static final int _yellow = 1;
+ public static final org.apache.tuscany.sca.test.corba.generated.Color yellow = new org.apache.tuscany.sca.test.corba.generated.Color(_yellow);
+ public static final int _green = 2;
+ public static final org.apache.tuscany.sca.test.corba.generated.Color green = new org.apache.tuscany.sca.test.corba.generated.Color(_green);
+
+ public int value ()
+ {
+ return __value;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.Color from_int (int value)
+ {
+ if (value >= 0 && value < __size)
+ return __array[value];
+ else
+ throw new org.omg.CORBA.BAD_PARAM ();
+ }
+
+ protected Color (int value)
+ {
+ __value = value;
+ __array[__value] = this;
+ }
+} // class Color
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHelper.java
new file mode 100644
index 0000000000..7f358936fa
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHelper.java
@@ -0,0 +1,72 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ColorHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class ColorHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/Color:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.Color that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.Color extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_enum_tc (org.apache.tuscany.sca.test.corba.generated.ColorHelper.id (), "Color", new String[] { "red", "yellow", "green"} );
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.Color read (org.omg.CORBA.portable.InputStream istream)
+ {
+ return org.apache.tuscany.sca.test.corba.generated.Color.from_int (istream.read_long ());
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.Color value)
+ {
+ ostream.write_long (value.value ());
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHolder.java
new file mode 100644
index 0000000000..b07e193995
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ColorHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ColorHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class ColorHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.Color value = null;
+
+ public ColorHolder ()
+ {
+ }
+
+ public ColorHolder (org.apache.tuscany.sca.test.corba.generated.Color initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.ColorHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.ColorHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.ColorHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStruct.java
new file mode 100644
index 0000000000..1c1cd31dc1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStruct.java
@@ -0,0 +1,47 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerStruct.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class InnerStruct implements org.omg.CORBA.portable.IDLEntity
+{
+ public int twoDimLongSequence[][] = null;
+ public String stringField = null;
+ public org.apache.tuscany.sca.test.corba.generated.Color color = null;
+
+ public InnerStruct ()
+ {
+ } // ctor
+
+ public InnerStruct (int[][] _twoDimLongSequence, String _stringField, org.apache.tuscany.sca.test.corba.generated.Color _color)
+ {
+ twoDimLongSequence = _twoDimLongSequence;
+ stringField = _stringField;
+ color = _color;
+ } // ctor
+
+} // class InnerStruct
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHelper.java
new file mode 100644
index 0000000000..565557db2d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHelper.java
@@ -0,0 +1,112 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerStructHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class InnerStructHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/InnerStruct/InnerStruct:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.InnerStruct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.InnerStruct extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [3];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_sequence_tc (0, _tcOf_members0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.id (), "LongSequence", _tcOf_members0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_sequence_tc (0, _tcOf_members0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.id (), "TwoDimLongSequence", _tcOf_members0);
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "twoDimLongSequence",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _members0[1] = new org.omg.CORBA.StructMember (
+ "stringField",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.apache.tuscany.sca.test.corba.generated.ColorHelper.type ();
+ _members0[2] = new org.omg.CORBA.StructMember (
+ "color",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.id (), "InnerStruct", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.InnerStruct read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.InnerStruct value = new org.apache.tuscany.sca.test.corba.generated.InnerStruct ();
+ value.twoDimLongSequence = org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.read (istream);
+ value.stringField = istream.read_string ();
+ value.color = org.apache.tuscany.sca.test.corba.generated.ColorHelper.read (istream);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.InnerStruct value)
+ {
+ org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.write (ostream, value.twoDimLongSequence);
+ ostream.write_string (value.stringField);
+ org.apache.tuscany.sca.test.corba.generated.ColorHelper.write (ostream, value.color);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHolder.java
new file mode 100644
index 0000000000..6e581e5215
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerStructHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerStructHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class InnerStructHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.InnerStruct value = null;
+
+ public InnerStructHolder ()
+ {
+ }
+
+ public InnerStructHolder (org.apache.tuscany.sca.test.corba.generated.InnerStruct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnion.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnion.java
new file mode 100644
index 0000000000..9c088b8bb9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnion.java
@@ -0,0 +1,130 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerUnion.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public final class InnerUnion implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___x;
+ private float ___y;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public InnerUnion ()
+ {
+ }
+
+ public int discriminator ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ return __discriminator;
+ }
+
+ public int x ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyx (__discriminator);
+ return ___x;
+ }
+
+ public void x (int value)
+ {
+ __discriminator = 1;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ public void x (int discriminator, int value)
+ {
+ verifyx (discriminator);
+ __discriminator = discriminator;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ private void verifyx (int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public float y ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyy (__discriminator);
+ return ___y;
+ }
+
+ public void y (float value)
+ {
+ __discriminator = 2;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ public void y (int discriminator, float value)
+ {
+ verifyy (discriminator);
+ __discriminator = discriminator;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ private void verifyy (int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public void _default ()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+
+ public void _default (int discriminator)
+ {
+ verifyDefault( discriminator ) ;
+ __discriminator = discriminator ;
+ __uninitialized = false;
+ }
+
+ private void verifyDefault( int value )
+ {
+ switch (value) {
+ case 1:
+ case 2:
+ throw new org.omg.CORBA.BAD_OPERATION() ;
+
+ default:
+ return;
+ }
+ }
+
+} // class InnerUnion
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHelper.java
new file mode 100644
index 0000000000..50069d7ac8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHelper.java
@@ -0,0 +1,124 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerUnionHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+abstract public class InnerUnionHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/InnerUnion/InnerUnion:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.InnerUnion that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.InnerUnion extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ org.omg.CORBA.UnionMember[] _members0 = new org.omg.CORBA.UnionMember [2];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for x (case label 1)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)1);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[0] = new org.omg.CORBA.UnionMember (
+ "x",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for y (case label 2)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)2);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_float);
+ _members0[1] = new org.omg.CORBA.UnionMember (
+ "y",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_union_tc (org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.id (), "InnerUnion", _disTypeCode0, _members0);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.InnerUnion read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.InnerUnion value = new org.apache.tuscany.sca.test.corba.generated.InnerUnion ();
+ int _dis0 = (int)0;
+ _dis0 = istream.read_long ();
+ switch (_dis0)
+ {
+ case 1:
+ int _x = (int)0;
+ _x = istream.read_long ();
+ value.x (_x);
+ break;
+ case 2:
+ float _y = (float)0;
+ _y = istream.read_float ();
+ value.y (_y);
+ break;
+ default:
+ value._default( _dis0 ) ;
+ break;
+ }
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.InnerUnion value)
+ {
+ ostream.write_long (value.discriminator ());
+ switch (value.discriminator ())
+ {
+ case 1:
+ ostream.write_long (value.x ());
+ break;
+ case 2:
+ ostream.write_float (value.y ());
+ break;
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHolder.java
new file mode 100644
index 0000000000..e63120a083
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/InnerUnionHolder.java
@@ -0,0 +1,56 @@
+/*
+ * 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.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/InnerUnionHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public final class InnerUnionHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.InnerUnion value = null;
+
+ public InnerUnionHolder ()
+ {
+ }
+
+ public InnerUnionHolder (org.apache.tuscany.sca.test.corba.generated.InnerUnion initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHelper.java
new file mode 100644
index 0000000000..b8e3e16a31
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHelper.java
@@ -0,0 +1,79 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/LongSequenceHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class LongSequenceHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/LongSequence:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, int[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static int[] extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ __typeCode = org.omg.CORBA.ORB.init ().create_sequence_tc (0, __typeCode);
+ __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.id (), "LongSequence", __typeCode);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static int[] read (org.omg.CORBA.portable.InputStream istream)
+ {
+ int value[] = null;
+ int _len0 = istream.read_long ();
+ value = new int[_len0];
+ istream.read_long_array (value, 0, _len0);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, int[] value)
+ {
+ ostream.write_long (value.length);
+ ostream.write_long_array (value, 0, value.length);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHolder.java
new file mode 100644
index 0000000000..292c3af11b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/LongSequenceHolder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/LongSequenceHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class LongSequenceHolder implements org.omg.CORBA.portable.Streamable
+{
+ public int value[] = null;
+
+ public LongSequenceHolder ()
+ {
+ }
+
+ public LongSequenceHolder (int[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStruct.java
new file mode 100644
index 0000000000..8a6047c92e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStruct.java
@@ -0,0 +1,47 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichStruct.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class RichStruct implements org.omg.CORBA.portable.IDLEntity
+{
+ public org.apache.tuscany.sca.test.corba.generated.InnerStruct innerStruct = null;
+ public String stringSequence[] = null;
+ public int longField = (int)0;
+
+ public RichStruct ()
+ {
+ } // ctor
+
+ public RichStruct (org.apache.tuscany.sca.test.corba.generated.InnerStruct _innerStruct, String[] _stringSequence, int _longField)
+ {
+ innerStruct = _innerStruct;
+ stringSequence = _stringSequence;
+ longField = _longField;
+ } // ctor
+
+} // class RichStruct
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHelper.java
new file mode 100644
index 0000000000..d9fcc63371
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHelper.java
@@ -0,0 +1,110 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichStructHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class RichStructHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/RichStruct/RichStruct:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.RichStruct that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.RichStruct extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [3];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.type ();
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "innerStruct",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_sequence_tc (0, _tcOf_members0);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.id (), "StringSequence", _tcOf_members0);
+ _members0[1] = new org.omg.CORBA.StructMember (
+ "stringSequence",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[2] = new org.omg.CORBA.StructMember (
+ "longField",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (org.apache.tuscany.sca.test.corba.generated.RichStructHelper.id (), "RichStruct", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.RichStruct read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.RichStruct value = new org.apache.tuscany.sca.test.corba.generated.RichStruct ();
+ value.innerStruct = org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.read (istream);
+ value.stringSequence = org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.read (istream);
+ value.longField = istream.read_long ();
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.RichStruct value)
+ {
+ org.apache.tuscany.sca.test.corba.generated.InnerStructHelper.write (ostream, value.innerStruct);
+ org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.write (ostream, value.stringSequence);
+ ostream.write_long (value.longField);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHolder.java
new file mode 100644
index 0000000000..a3f2c8314e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichStructHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichStructHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class RichStructHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.RichStruct value = null;
+
+ public RichStructHolder ()
+ {
+ }
+
+ public RichStructHolder (org.apache.tuscany.sca.test.corba.generated.RichStruct initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.RichStructHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.RichStructHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.RichStructHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnion.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnion.java
new file mode 100644
index 0000000000..2c49fac39f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnion.java
@@ -0,0 +1,195 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichUnion.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public final class RichUnion implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___x;
+ private float ___y;
+ private String ___z;
+ private org.apache.tuscany.sca.test.corba.generated.InnerUnion ___iu;
+ private boolean ___a;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public RichUnion ()
+ {
+ }
+
+ public int discriminator ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ return __discriminator;
+ }
+
+ public int x ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyx (__discriminator);
+ return ___x;
+ }
+
+ public void x (int value)
+ {
+ __discriminator = 1;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ public void x (int discriminator, int value)
+ {
+ verifyx (discriminator);
+ __discriminator = discriminator;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ private void verifyx (int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public float y ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyy (__discriminator);
+ return ___y;
+ }
+
+ public void y (float value)
+ {
+ __discriminator = 2;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ public void y (int discriminator, float value)
+ {
+ verifyy (discriminator);
+ __discriminator = discriminator;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ private void verifyy (int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public String z ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyz (__discriminator);
+ return ___z;
+ }
+
+ public void z (String value)
+ {
+ __discriminator = 3;
+ ___z = value;
+ __uninitialized = false;
+ }
+
+ public void z (int discriminator, String value)
+ {
+ verifyz (discriminator);
+ __discriminator = discriminator;
+ ___z = value;
+ __uninitialized = false;
+ }
+
+ private void verifyz (int discriminator)
+ {
+ if (discriminator != 3)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public org.apache.tuscany.sca.test.corba.generated.InnerUnion iu ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyiu (__discriminator);
+ return ___iu;
+ }
+
+ public void iu (org.apache.tuscany.sca.test.corba.generated.InnerUnion value)
+ {
+ __discriminator = 4;
+ ___iu = value;
+ __uninitialized = false;
+ }
+
+ public void iu (int discriminator, org.apache.tuscany.sca.test.corba.generated.InnerUnion value)
+ {
+ verifyiu (discriminator);
+ __discriminator = discriminator;
+ ___iu = value;
+ __uninitialized = false;
+ }
+
+ private void verifyiu (int discriminator)
+ {
+ if (discriminator != 4)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public boolean a ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifya (__discriminator);
+ return ___a;
+ }
+
+ public void a (boolean value)
+ {
+ __discriminator = -2147483648;
+ ___a = value;
+ __uninitialized = false;
+ }
+
+ public void a (int discriminator, boolean value)
+ {
+ verifya (discriminator);
+ __discriminator = discriminator;
+ ___a = value;
+ __uninitialized = false;
+ }
+
+ private void verifya (int discriminator)
+ {
+ if (discriminator == 1 || discriminator == 2 || discriminator == 3 || discriminator == 4)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+} // class RichUnion
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHelper.java
new file mode 100644
index 0000000000..5b1b710919
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHelper.java
@@ -0,0 +1,175 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichUnionHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+abstract public class RichUnionHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/RichUnion/RichUnion:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.RichUnion that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.RichUnion extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ org.omg.CORBA.UnionMember[] _members0 = new org.omg.CORBA.UnionMember [5];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for x (case label 1)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)1);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[0] = new org.omg.CORBA.UnionMember (
+ "x",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for y (case label 2)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)2);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_float);
+ _members0[1] = new org.omg.CORBA.UnionMember (
+ "y",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for z (case label 3)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)3);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _members0[2] = new org.omg.CORBA.UnionMember (
+ "z",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for iu (case label 4)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)4);
+ _tcOf_members0 = org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.type ();
+ _members0[3] = new org.omg.CORBA.UnionMember (
+ "iu",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for a (Default case)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_octet ((byte)0); // default member label
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
+ _members0[4] = new org.omg.CORBA.UnionMember (
+ "a",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_union_tc (org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.id (), "RichUnion", _disTypeCode0, _members0);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.RichUnion read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.RichUnion value = new org.apache.tuscany.sca.test.corba.generated.RichUnion ();
+ int _dis0 = (int)0;
+ _dis0 = istream.read_long ();
+ switch (_dis0)
+ {
+ case 1:
+ int _x = (int)0;
+ _x = istream.read_long ();
+ value.x (_x);
+ break;
+ case 2:
+ float _y = (float)0;
+ _y = istream.read_float ();
+ value.y (_y);
+ break;
+ case 3:
+ String _z = null;
+ _z = istream.read_string ();
+ value.z (_z);
+ break;
+ case 4:
+ org.apache.tuscany.sca.test.corba.generated.InnerUnion _iu = null;
+ _iu = org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.read (istream);
+ value.iu (_iu);
+ break;
+ default:
+ boolean _a = false;
+ _a = istream.read_boolean ();
+ value.a (_dis0, _a);
+ break;
+ }
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.RichUnion value)
+ {
+ ostream.write_long (value.discriminator ());
+ switch (value.discriminator ())
+ {
+ case 1:
+ ostream.write_long (value.x ());
+ break;
+ case 2:
+ ostream.write_float (value.y ());
+ break;
+ case 3:
+ ostream.write_string (value.z ());
+ break;
+ case 4:
+ org.apache.tuscany.sca.test.corba.generated.InnerUnionHelper.write (ostream, value.iu ());
+ break;
+ default:
+ ostream.write_boolean (value.a ());
+ break;
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHolder.java
new file mode 100644
index 0000000000..3bf646a485
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/RichUnionHolder.java
@@ -0,0 +1,56 @@
+/*
+ * 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.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/RichUnionHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public final class RichUnionHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.RichUnion value = null;
+
+ public RichUnionHolder ()
+ {
+ }
+
+ public RichUnionHolder (org.apache.tuscany.sca.test.corba.generated.RichUnion initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOne.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOne.java
new file mode 100644
index 0000000000..08ca7c699a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOne.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioOne.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public interface ScenarioOne extends ScenarioOneOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
+{
+} // interface ScenarioOne
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHelper.java
new file mode 100644
index 0000000000..6d189ddc2a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHelper.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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioOneHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class ScenarioOneHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioOne:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.ScenarioOne that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioOne extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (org.apache.tuscany.sca.test.corba.generated.ScenarioOneHelper.id (), "ScenarioOne");
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioOne read (org.omg.CORBA.portable.InputStream istream)
+ {
+ return narrow (istream.read_Object (_ScenarioOneStub.class));
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.ScenarioOne value)
+ {
+ ostream.write_Object ((org.omg.CORBA.Object) value);
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioOne narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioOne)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioOne)obj;
+ else if (!obj._is_a (id ()))
+ throw new org.omg.CORBA.BAD_PARAM ();
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioOneStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioOneStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioOne unchecked_narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioOne)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioOne)obj;
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioOneStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioOneStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHolder.java
new file mode 100644
index 0000000000..6bb5fe9044
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioOneHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class ScenarioOneHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.ScenarioOne value = null;
+
+ public ScenarioOneHolder ()
+ {
+ }
+
+ public ScenarioOneHolder (org.apache.tuscany.sca.test.corba.generated.ScenarioOne initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.ScenarioOneHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.ScenarioOneHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.ScenarioOneHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneOperations.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneOperations.java
new file mode 100644
index 0000000000..43aca562ad
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioOneOperations.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioOneOperations.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public interface ScenarioOneOperations
+{
+ org.apache.tuscany.sca.test.corba.generated.RichStruct setRichStruct (org.apache.tuscany.sca.test.corba.generated.RichStruct richStruct) throws org.apache.tuscany.sca.test.corba.generated.WrongColor, org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+} // interface ScenarioOneOperations
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSix.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSix.java
new file mode 100644
index 0000000000..73c96c260d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSix.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioSix.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+public interface ScenarioSix extends ScenarioSixOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
+{
+} // interface ScenarioSix
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHelper.java
new file mode 100644
index 0000000000..6fd029ec6f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHelper.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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioSixHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+abstract public class ScenarioSixHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioSix:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.ScenarioSix that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioSix extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (org.apache.tuscany.sca.test.corba.generated.ScenarioSixHelper.id (), "ScenarioSix");
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioSix read (org.omg.CORBA.portable.InputStream istream)
+ {
+ return narrow (istream.read_Object (_ScenarioSixStub.class));
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.ScenarioSix value)
+ {
+ ostream.write_Object ((org.omg.CORBA.Object) value);
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioSix narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioSix)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioSix)obj;
+ else if (!obj._is_a (id ()))
+ throw new org.omg.CORBA.BAD_PARAM ();
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioSixStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioSixStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioSix unchecked_narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioSix)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioSix)obj;
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioSixStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioSixStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHolder.java
new file mode 100644
index 0000000000..103db27cd2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioSixHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+public final class ScenarioSixHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.ScenarioSix value = null;
+
+ public ScenarioSixHolder ()
+ {
+ }
+
+ public ScenarioSixHolder (org.apache.tuscany.sca.test.corba.generated.ScenarioSix initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.ScenarioSixHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.ScenarioSixHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.ScenarioSixHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixOperations.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixOperations.java
new file mode 100644
index 0000000000..c47565e63e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioSixOperations.java
@@ -0,0 +1,35 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioSixOperations.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public interface ScenarioSixOperations
+{
+ String[][] passStringArray (String[][] arg);
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct passAnnotatedStruct (org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct arg);
+ org.apache.tuscany.sca.test.corba.generated.RichUnion passRichUnion (org.apache.tuscany.sca.test.corba.generated.RichUnion arg);
+} // interface ScenarioSixOperations
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwo.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwo.java
new file mode 100644
index 0000000000..b57e098a56
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwo.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioTwo.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+public interface ScenarioTwo extends ScenarioTwoOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
+{
+} // interface ScenarioTwo
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHelper.java
new file mode 100644
index 0000000000..8ddfa10575
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHelper.java
@@ -0,0 +1,106 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+abstract public class ScenarioTwoHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioTwo:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.ScenarioTwo that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioTwo extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (org.apache.tuscany.sca.test.corba.generated.ScenarioTwoHelper.id (), "ScenarioTwo");
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioTwo read (org.omg.CORBA.portable.InputStream istream)
+ {
+ return narrow (istream.read_Object (_ScenarioTwoStub.class));
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.ScenarioTwo value)
+ {
+ ostream.write_Object ((org.omg.CORBA.Object) value);
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioTwo narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioTwo)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioTwo)obj;
+ else if (!obj._is_a (id ()))
+ throw new org.omg.CORBA.BAD_PARAM ();
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioTwoStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioTwoStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.ScenarioTwo unchecked_narrow (org.omg.CORBA.Object obj)
+ {
+ if (obj == null)
+ return null;
+ else if (obj instanceof org.apache.tuscany.sca.test.corba.generated.ScenarioTwo)
+ return (org.apache.tuscany.sca.test.corba.generated.ScenarioTwo)obj;
+ else
+ {
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
+ org.apache.tuscany.sca.test.corba.generated._ScenarioTwoStub stub = new org.apache.tuscany.sca.test.corba.generated._ScenarioTwoStub ();
+ stub._set_delegate(delegate);
+ return stub;
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHolder.java
new file mode 100644
index 0000000000..9717629711
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHolder.java
@@ -0,0 +1,59 @@
+/*
+ * 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.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioTwoHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+public final class ScenarioTwoHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.ScenarioTwo value = null;
+
+ public ScenarioTwoHolder ()
+ {
+ }
+
+ public ScenarioTwoHolder (org.apache.tuscany.sca.test.corba.generated.ScenarioTwo initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.ScenarioTwoHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.ScenarioTwoHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.ScenarioTwoHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoOperations.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoOperations.java
new file mode 100644
index 0000000000..1247b4618d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/ScenarioTwoOperations.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 org.apache.tuscany.sca.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/ScenarioTwoOperations.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+public interface ScenarioTwoOperations
+{
+ String stringField ();
+ void stringField (String newStringField);
+} // interface ScenarioTwoOperations
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHelper.java
new file mode 100644
index 0000000000..9f1cb6bc6b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHelper.java
@@ -0,0 +1,95 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/StringArrayHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+abstract public class StringArrayHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/StringArray:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, String[][] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static String[][] extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ __typeCode = org.omg.CORBA.ORB.init ().create_array_tc (2, __typeCode );
+ __typeCode = org.omg.CORBA.ORB.init ().create_array_tc (2, __typeCode );
+ __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.id (), "StringArray", __typeCode);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static String[][] read (org.omg.CORBA.portable.InputStream istream)
+ {
+ String value[][] = null;
+ value = new String[2][];
+ for (int _o0 = 0;_o0 < (2); ++_o0)
+ {
+ value[_o0] = new String[2];
+ for (int _o1 = 0;_o1 < (2); ++_o1)
+ {
+ value[_o0][_o1] = istream.read_string ();
+ }
+ }
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, String[][] value)
+ {
+ if (value.length != (2))
+ throw new org.omg.CORBA.MARSHAL (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+ for (int _i0 = 0;_i0 < (2); ++_i0)
+ {
+ if (value[_i0].length != (2))
+ throw new org.omg.CORBA.MARSHAL (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+ for (int _i1 = 0;_i1 < (2); ++_i1)
+ {
+ ostream.write_string (value[_i0][_i1]);
+ }
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHolder.java
new file mode 100644
index 0000000000..b2906bb13c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringArrayHolder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/StringArrayHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* sobota, 16 sierpie 2008 15:31:35 CEST
+*/
+
+public final class StringArrayHolder implements org.omg.CORBA.portable.Streamable
+{
+ public String value[][] = null;
+
+ public StringArrayHolder ()
+ {
+ }
+
+ public StringArrayHolder (String[][] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHelper.java
new file mode 100644
index 0000000000..adf72c5c35
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHelper.java
@@ -0,0 +1,81 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/StringSequenceHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class StringSequenceHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/StringSequence:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, String[] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static String[] extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ __typeCode = org.omg.CORBA.ORB.init ().create_sequence_tc (0, __typeCode);
+ __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.id (), "StringSequence", __typeCode);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static String[] read (org.omg.CORBA.portable.InputStream istream)
+ {
+ String value[] = null;
+ int _len0 = istream.read_long ();
+ value = new String[_len0];
+ for (int _o1 = 0;_o1 < value.length; ++_o1)
+ value[_o1] = istream.read_string ();
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, String[] value)
+ {
+ ostream.write_long (value.length);
+ for (int _i0 = 0;_i0 < value.length; ++_i0)
+ ostream.write_string (value[_i0]);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHolder.java
new file mode 100644
index 0000000000..ddaec3549e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/StringSequenceHolder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/StringSequenceHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class StringSequenceHolder implements org.omg.CORBA.portable.Streamable
+{
+ public String value[] = null;
+
+ public StringSequenceHolder ()
+ {
+ }
+
+ public StringSequenceHolder (String[] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.StringSequenceHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHelper.java
new file mode 100644
index 0000000000..993dc155d6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHelper.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class TwoDimLongSequenceHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequence:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, int[][] that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static int[][] extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ __typeCode = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ __typeCode = org.omg.CORBA.ORB.init ().create_sequence_tc (0, __typeCode);
+ __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.id (), "LongSequence", __typeCode);
+ __typeCode = org.omg.CORBA.ORB.init ().create_sequence_tc (0, __typeCode);
+ __typeCode = org.omg.CORBA.ORB.init ().create_alias_tc (org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.id (), "TwoDimLongSequence", __typeCode);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static int[][] read (org.omg.CORBA.portable.InputStream istream)
+ {
+ int value[][] = null;
+ int _len0 = istream.read_long ();
+ value = new int[_len0][];
+ for (int _o1 = 0;_o1 < value.length; ++_o1)
+ value[_o1] = org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.read (istream);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, int[][] value)
+ {
+ ostream.write_long (value.length);
+ for (int _i0 = 0;_i0 < value.length; ++_i0)
+ org.apache.tuscany.sca.test.corba.generated.LongSequenceHelper.write (ostream, value[_i0]);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHolder.java
new file mode 100644
index 0000000000..6e3deb2251
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHolder.java
@@ -0,0 +1,58 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/TwoDimLongSequenceHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class TwoDimLongSequenceHolder implements org.omg.CORBA.portable.Streamable
+{
+ public int value[][] = null;
+
+ public TwoDimLongSequenceHolder ()
+ {
+ }
+
+ public TwoDimLongSequenceHolder (int[][] initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.TwoDimLongSequenceHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedException.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedException.java
new file mode 100644
index 0000000000..86787ee968
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedException.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/UnexpectedException.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class UnexpectedException extends org.omg.CORBA.UserException
+{
+ public String info = null;
+
+ public UnexpectedException ()
+ {
+ super(UnexpectedExceptionHelper.id());
+ } // ctor
+
+ public UnexpectedException (String _info)
+ {
+ super(UnexpectedExceptionHelper.id());
+ info = _info;
+ } // ctor
+
+
+ public UnexpectedException (String $reason, String _info)
+ {
+ super(UnexpectedExceptionHelper.id() + " " + $reason);
+ info = _info;
+ } // ctor
+
+} // class UnexpectedException
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHelper.java
new file mode 100644
index 0000000000..6a5646c73d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHelper.java
@@ -0,0 +1,98 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class UnexpectedExceptionHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/UnexpectedException:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.UnexpectedException that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.UnexpectedException extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [1];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "info",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_exception_tc (org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.id (), "UnexpectedException", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.UnexpectedException read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.UnexpectedException value = new org.apache.tuscany.sca.test.corba.generated.UnexpectedException ();
+ // read and discard the repository ID
+ istream.read_string ();
+ value.info = istream.read_string ();
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.UnexpectedException value)
+ {
+ // write the repository ID
+ ostream.write_string (id ());
+ ostream.write_string (value.info);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHolder.java
new file mode 100644
index 0000000000..0f62442652
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/UnexpectedExceptionHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class UnexpectedExceptionHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.UnexpectedException value = null;
+
+ public UnexpectedExceptionHolder ()
+ {
+ }
+
+ public UnexpectedExceptionHolder (org.apache.tuscany.sca.test.corba.generated.UnexpectedException initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColor.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColor.java
new file mode 100644
index 0000000000..1167c7de21
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColor.java
@@ -0,0 +1,55 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/WrongColor.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class WrongColor extends org.omg.CORBA.UserException
+{
+ public org.apache.tuscany.sca.test.corba.generated.Color givenColor = null;
+ public org.apache.tuscany.sca.test.corba.generated.Color correctColor = null;
+
+ public WrongColor ()
+ {
+ super(WrongColorHelper.id());
+ } // ctor
+
+ public WrongColor (org.apache.tuscany.sca.test.corba.generated.Color _givenColor, org.apache.tuscany.sca.test.corba.generated.Color _correctColor)
+ {
+ super(WrongColorHelper.id());
+ givenColor = _givenColor;
+ correctColor = _correctColor;
+ } // ctor
+
+
+ public WrongColor (String $reason, org.apache.tuscany.sca.test.corba.generated.Color _givenColor, org.apache.tuscany.sca.test.corba.generated.Color _correctColor)
+ {
+ super(WrongColorHelper.id() + " " + $reason);
+ givenColor = _givenColor;
+ correctColor = _correctColor;
+ } // ctor
+
+} // class WrongColor
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHelper.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHelper.java
new file mode 100644
index 0000000000..fc32fd1db6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHelper.java
@@ -0,0 +1,105 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/WrongColorHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+abstract public class WrongColorHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/test/corba/generated/WrongColor:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.test.corba.generated.WrongColor that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.WrongColor extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ private static boolean __active = false;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ synchronized (org.omg.CORBA.TypeCode.class)
+ {
+ if (__typeCode == null)
+ {
+ if (__active)
+ {
+ return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
+ }
+ __active = true;
+ org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [2];
+ org.omg.CORBA.TypeCode _tcOf_members0 = null;
+ _tcOf_members0 = org.apache.tuscany.sca.test.corba.generated.ColorHelper.type ();
+ _members0[0] = new org.omg.CORBA.StructMember (
+ "givenColor",
+ _tcOf_members0,
+ null);
+ _tcOf_members0 = org.apache.tuscany.sca.test.corba.generated.ColorHelper.type ();
+ _members0[1] = new org.omg.CORBA.StructMember (
+ "correctColor",
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_exception_tc (org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.id (), "WrongColor", _members0);
+ __active = false;
+ }
+ }
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.test.corba.generated.WrongColor read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.test.corba.generated.WrongColor value = new org.apache.tuscany.sca.test.corba.generated.WrongColor ();
+ // read and discard the repository ID
+ istream.read_string ();
+ value.givenColor = org.apache.tuscany.sca.test.corba.generated.ColorHelper.read (istream);
+ value.correctColor = org.apache.tuscany.sca.test.corba.generated.ColorHelper.read (istream);
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.test.corba.generated.WrongColor value)
+ {
+ // write the repository ID
+ ostream.write_string (id ());
+ org.apache.tuscany.sca.test.corba.generated.ColorHelper.write (ostream, value.givenColor);
+ org.apache.tuscany.sca.test.corba.generated.ColorHelper.write (ostream, value.correctColor);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHolder.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHolder.java
new file mode 100644
index 0000000000..9648e29d6d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/WrongColorHolder.java
@@ -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 org.apache.tuscany.sca.test.corba.generated;
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/WrongColorHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public final class WrongColorHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.test.corba.generated.WrongColor value = null;
+
+ public WrongColorHolder ()
+ {
+ }
+
+ public WrongColorHolder (org.apache.tuscany.sca.test.corba.generated.WrongColor initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.type ();
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneImplBase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneImplBase.java
new file mode 100644
index 0000000000..93d9fe164d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneImplBase.java
@@ -0,0 +1,91 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioOneImplBase.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public abstract class _ScenarioOneImplBase extends org.omg.CORBA.portable.ObjectImpl
+ implements org.apache.tuscany.sca.test.corba.generated.ScenarioOne, org.omg.CORBA.portable.InvokeHandler
+{
+
+ // Constructors
+ public _ScenarioOneImplBase ()
+ {
+ }
+
+ private static java.util.Hashtable _methods = new java.util.Hashtable ();
+ static
+ {
+ _methods.put ("setRichStruct", new java.lang.Integer (0));
+ }
+
+ public org.omg.CORBA.portable.OutputStream _invoke (String $method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler $rh)
+ {
+ org.omg.CORBA.portable.OutputStream out = null;
+ java.lang.Integer __method = (java.lang.Integer)_methods.get ($method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+
+ switch (__method.intValue ())
+ {
+ case 0: // org/apache/tuscany/sca/test/corba/generated/ScenarioOne/setRichStruct
+ {
+ try {
+ org.apache.tuscany.sca.test.corba.generated.RichStruct richStruct = org.apache.tuscany.sca.test.corba.generated.RichStructHelper.read (in);
+ org.apache.tuscany.sca.test.corba.generated.RichStruct $result = null;
+ $result = this.setRichStruct (richStruct);
+ out = $rh.createReply();
+ org.apache.tuscany.sca.test.corba.generated.RichStructHelper.write (out, $result);
+ } catch (org.apache.tuscany.sca.test.corba.generated.WrongColor $ex) {
+ out = $rh.createExceptionReply ();
+ org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.write (out, $ex);
+ } catch (org.apache.tuscany.sca.test.corba.generated.UnexpectedException $ex) {
+ out = $rh.createExceptionReply ();
+ org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.write (out, $ex);
+ }
+ break;
+ }
+
+ default:
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioOne:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+
+} // class _ScenarioOneImplBase
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneStub.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneStub.java
new file mode 100644
index 0000000000..622adaf46b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioOneStub.java
@@ -0,0 +1,84 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioOneStub.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* pitek, 27 czerwiec 2008 20:40:03 CEST
+*/
+
+public class _ScenarioOneStub extends org.omg.CORBA.portable.ObjectImpl implements org.apache.tuscany.sca.test.corba.generated.ScenarioOne
+{
+
+ public org.apache.tuscany.sca.test.corba.generated.RichStruct setRichStruct (org.apache.tuscany.sca.test.corba.generated.RichStruct richStruct) throws org.apache.tuscany.sca.test.corba.generated.WrongColor, org.apache.tuscany.sca.test.corba.generated.UnexpectedException
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("setRichStruct", true);
+ org.apache.tuscany.sca.test.corba.generated.RichStructHelper.write ($out, richStruct);
+ $in = _invoke ($out);
+ org.apache.tuscany.sca.test.corba.generated.RichStruct $result = org.apache.tuscany.sca.test.corba.generated.RichStructHelper.read ($in);
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ if (_id.equals ("IDL:org/apache/tuscany/sca/test/corba/generated/WrongColor:1.0"))
+ throw org.apache.tuscany.sca.test.corba.generated.WrongColorHelper.read ($in);
+ else if (_id.equals ("IDL:org/apache/tuscany/sca/test/corba/generated/UnexpectedException:1.0"))
+ throw org.apache.tuscany.sca.test.corba.generated.UnexpectedExceptionHelper.read ($in);
+ else
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return setRichStruct (richStruct );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // setRichStruct
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioOne:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+ private void readObject (java.io.ObjectInputStream s) throws java.io.IOException
+ {
+ String str = s.readUTF ();
+ String[] args = null;
+ java.util.Properties props = null;
+ org.omg.CORBA.Object obj = org.omg.CORBA.ORB.init (args, props).string_to_object (str);
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate ();
+ _set_delegate (delegate);
+ }
+
+ private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException
+ {
+ String[] args = null;
+ java.util.Properties props = null;
+ String str = org.omg.CORBA.ORB.init (args, props).object_to_string (this);
+ s.writeUTF (str);
+ }
+} // class _ScenarioOneStub
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixImplBase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixImplBase.java
new file mode 100644
index 0000000000..117d1d6382
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixImplBase.java
@@ -0,0 +1,105 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioSixImplBase.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 23:35:36 CEST
+*/
+
+public abstract class _ScenarioSixImplBase extends org.omg.CORBA.portable.ObjectImpl
+ implements org.apache.tuscany.sca.test.corba.generated.ScenarioSix, org.omg.CORBA.portable.InvokeHandler
+{
+
+ // Constructors
+ public _ScenarioSixImplBase ()
+ {
+ }
+
+ private static java.util.Hashtable _methods = new java.util.Hashtable ();
+ static
+ {
+ _methods.put ("passStringArray", new java.lang.Integer (0));
+ _methods.put ("passAnnotatedStruct", new java.lang.Integer (1));
+ _methods.put ("passRichUnion", new java.lang.Integer (2));
+ }
+
+ public org.omg.CORBA.portable.OutputStream _invoke (String $method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler $rh)
+ {
+ org.omg.CORBA.portable.OutputStream out = null;
+ java.lang.Integer __method = (java.lang.Integer)_methods.get ($method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+
+ switch (__method.intValue ())
+ {
+ case 0: // org/apache/tuscany/sca/test/corba/generated/ScenarioSix/passStringArray
+ {
+ String arg[][] = org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.read (in);
+ String $result[][] = null;
+ $result = this.passStringArray (arg);
+ out = $rh.createReply();
+ org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.write (out, $result);
+ break;
+ }
+
+ case 1: // org/apache/tuscany/sca/test/corba/generated/ScenarioSix/passAnnotatedStruct
+ {
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct arg = org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.read (in);
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct $result = null;
+ $result = this.passAnnotatedStruct (arg);
+ out = $rh.createReply();
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.write (out, $result);
+ break;
+ }
+
+ case 2: // org/apache/tuscany/sca/test/corba/generated/ScenarioSix/passRichUnion
+ {
+ org.apache.tuscany.sca.test.corba.generated.RichUnion arg = org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.read (in);
+ org.apache.tuscany.sca.test.corba.generated.RichUnion $result = null;
+ $result = this.passRichUnion (arg);
+ out = $rh.createReply();
+ org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.write (out, $result);
+ break;
+ }
+
+ default:
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioSix:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+
+} // class _ScenarioSixImplBase
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixStub.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixStub.java
new file mode 100644
index 0000000000..eba1b61fa3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioSixStub.java
@@ -0,0 +1,119 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioSixStub.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* niedziela, 17 sierpie 2008 19:07:14 CEST
+*/
+
+public class _ScenarioSixStub extends org.omg.CORBA.portable.ObjectImpl implements org.apache.tuscany.sca.test.corba.generated.ScenarioSix
+{
+
+ public String[][] passStringArray (String[][] arg)
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("passStringArray", true);
+ org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.write ($out, arg);
+ $in = _invoke ($out);
+ String $result[][] = org.apache.tuscany.sca.test.corba.generated.StringArrayHelper.read ($in);
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return passStringArray (arg );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // passStringArray
+
+ public org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct passAnnotatedStruct (org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct arg)
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("passAnnotatedStruct", true);
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.write ($out, arg);
+ $in = _invoke ($out);
+ org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct $result = org.apache.tuscany.sca.test.corba.generated.AnnotatedStructHelper.read ($in);
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return passAnnotatedStruct (arg );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // passAnnotatedStruct
+
+ public org.apache.tuscany.sca.test.corba.generated.RichUnion passRichUnion (org.apache.tuscany.sca.test.corba.generated.RichUnion arg)
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("passRichUnion", true);
+ org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.write ($out, arg);
+ $in = _invoke ($out);
+ org.apache.tuscany.sca.test.corba.generated.RichUnion $result = org.apache.tuscany.sca.test.corba.generated.RichUnionHelper.read ($in);
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return passRichUnion (arg );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // passRichUnion
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioSix:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+ private void readObject (java.io.ObjectInputStream s) throws java.io.IOException
+ {
+ String str = s.readUTF ();
+ String[] args = null;
+ java.util.Properties props = null;
+ org.omg.CORBA.Object obj = org.omg.CORBA.ORB.init (args, props).string_to_object (str);
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate ();
+ _set_delegate (delegate);
+ }
+
+ private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException
+ {
+ String[] args = null;
+ java.util.Properties props = null;
+ String str = org.omg.CORBA.ORB.init (args, props).object_to_string (this);
+ s.writeUTF (str);
+ }
+} // class _ScenarioSixStub
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoImplBase.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoImplBase.java
new file mode 100644
index 0000000000..750006cec6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoImplBase.java
@@ -0,0 +1,93 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoImplBase.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+public abstract class _ScenarioTwoImplBase extends org.omg.CORBA.portable.ObjectImpl
+ implements org.apache.tuscany.sca.test.corba.generated.ScenarioTwo, org.omg.CORBA.portable.InvokeHandler
+{
+
+ // Constructors
+ public _ScenarioTwoImplBase ()
+ {
+ }
+
+ private static java.util.Hashtable _methods = new java.util.Hashtable ();
+ static
+ {
+ _methods.put ("_get_stringField", new java.lang.Integer (0));
+ _methods.put ("_set_stringField", new java.lang.Integer (1));
+ }
+
+ public org.omg.CORBA.portable.OutputStream _invoke (String $method,
+ org.omg.CORBA.portable.InputStream in,
+ org.omg.CORBA.portable.ResponseHandler $rh)
+ {
+ org.omg.CORBA.portable.OutputStream out = null;
+ java.lang.Integer __method = (java.lang.Integer)_methods.get ($method);
+ if (__method == null)
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+
+ switch (__method.intValue ())
+ {
+ case 0: // org/apache/tuscany/sca/test/corba/generated/ScenarioTwo/_get_stringField
+ {
+ String $result = null;
+ $result = this.stringField ();
+ out = $rh.createReply();
+ out.write_string ($result);
+ break;
+ }
+
+ case 1: // org/apache/tuscany/sca/test/corba/generated/ScenarioTwo/_set_stringField
+ {
+ String newStringField = in.read_string ();
+ this.stringField (newStringField);
+ out = $rh.createReply();
+ break;
+ }
+
+ default:
+ throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
+ }
+
+ return out;
+ } // _invoke
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioTwo:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+
+} // class _ScenarioTwoImplBase
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoStub.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoStub.java
new file mode 100644
index 0000000000..ef9f561d1b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoStub.java
@@ -0,0 +1,99 @@
+/*
+ * 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.test.corba.generated;
+
+
+/**
+* org/apache/tuscany/sca/test/corba/generated/_ScenarioTwoStub.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from itest_scenario.idl
+* wtorek, 15 lipiec 2008 13:36:31 CEST
+*/
+
+
+// objects for ScenarioTwo
+public class _ScenarioTwoStub extends org.omg.CORBA.portable.ObjectImpl implements org.apache.tuscany.sca.test.corba.generated.ScenarioTwo
+{
+
+ public String stringField ()
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("_get_stringField", true);
+ $in = _invoke ($out);
+ String $result = $in.read_string ();
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return stringField ( );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // stringField
+
+ public void stringField (String newStringField)
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("_set_stringField", true);
+ $out.write_string (newStringField);
+ $in = _invoke ($out);
+ return;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ stringField (newStringField );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // stringField
+
+ // Type-specific CORBA::Object operations
+ private static String[] __ids = {
+ "IDL:org/apache/tuscany/sca/test/corba/generated/ScenarioTwo:1.0"};
+
+ public String[] _ids ()
+ {
+ return (String[])__ids.clone ();
+ }
+
+ private void readObject (java.io.ObjectInputStream s) throws java.io.IOException
+ {
+ String str = s.readUTF ();
+ String[] args = null;
+ java.util.Properties props = null;
+ org.omg.CORBA.Object obj = org.omg.CORBA.ORB.init (args, props).string_to_object (str);
+ org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl) obj)._get_delegate ();
+ _set_delegate (delegate);
+ }
+
+ private void writeObject (java.io.ObjectOutputStream s) throws java.io.IOException
+ {
+ String[] args = null;
+ java.util.Properties props = null;
+ String str = org.omg.CORBA.ORB.init (args, props).object_to_string (this);
+ s.writeUTF (str);
+ }
+} // class _ScenarioTwoStub
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
new file mode 100644
index 0000000000..4f6eacc9ff
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFive.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test.corba.types;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ * Operations for scenario five
+ */
+@Remotable
+public interface ScenarioFive {
+
+ void doNothing();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
new file mode 100644
index 0000000000..a3be6daa23
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveComponent.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for obtaining ScenarioFive reference
+ */
+public class ScenarioFiveComponent {
+
+ private ScenarioFive scenarioFive;
+
+ @Reference
+ public void setScenarioFive(ScenarioFive scenarioFive) {
+ this.scenarioFive = scenarioFive;
+ }
+
+ public ScenarioFive getScenarioFive() {
+ return scenarioFive;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
new file mode 100644
index 0000000000..dc752a2aea
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFiveImpl.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Implementation of ScenarioFive service
+ */
+public class ScenarioFiveImpl implements ScenarioFive {
+
+ public void doNothing() {
+ // does nothing
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFour.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFour.java
new file mode 100644
index 0000000000..aec0f7b1bf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFour.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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.scenariofour.ScenarioFourSdo;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ * Operations for ScenarioFour
+ */
+@Remotable
+public interface ScenarioFour {
+
+ ScenarioFourStruct setStruct(ScenarioFourStruct struct);
+
+ void exceptionTest() throws ScenarioFourException;
+
+ ScenarioFourSdo passScenarioFourStruct(ScenarioFourSdo scenarioFourSdo);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourComponent.java
new file mode 100644
index 0000000000..04aef326af
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourComponent.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for obtaining ScenarioFour reference
+ */
+public class ScenarioFourComponent {
+
+ private ScenarioFour scenarioFour;
+
+ @Reference
+ public void setScenarioFour(ScenarioFour scenarioFour) {
+ this.scenarioFour = scenarioFour;
+ }
+
+ public ScenarioFour getScenarioFour() {
+ return scenarioFour;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourException.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourException.java
new file mode 100644
index 0000000000..bc76373633
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourException.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Exception for ScenarioFour tests
+ */
+public class ScenarioFourException extends Exception {
+
+ public static final String DEFAULT_CONTENT = "Test";
+
+ private static final long serialVersionUID = 1L;
+ private String content;
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourImpl.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourImpl.java
new file mode 100644
index 0000000000..2f10177bd0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.scenariofour.ScenarioFourSdo;
+
+/**
+ * @version $Rev$ $Date$
+ * Implementation of ScenarioFour service
+ */
+public class ScenarioFourImpl implements ScenarioFour {
+
+ public ScenarioFourStruct setStruct(ScenarioFourStruct struct) {
+ return struct;
+ }
+
+ public void exceptionTest() throws ScenarioFourException {
+ ScenarioFourException exception = new ScenarioFourException();
+ exception.setContent(ScenarioFourException.DEFAULT_CONTENT);
+ throw exception;
+ }
+
+ public ScenarioFourSdo passScenarioFourStruct(ScenarioFourSdo scenarioFourSdo) {
+ return scenarioFourSdo;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourStruct.java
new file mode 100644
index 0000000000..de8624455f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioFourStruct.java
@@ -0,0 +1,40 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Type for ScenarioFour test
+ */
+public class ScenarioFourStruct {
+
+ public String field1;
+ public int field2;
+ public double[] field3;
+
+ public boolean equals(ScenarioFourStruct arg) {
+ return (field1 != null && arg.field1 != null
+ && field1.equals(arg.field1)
+ && field2 == arg.field2
+ && field3 != null
+ && arg.field3 != null && field3.length == arg.field3.length);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneComponent.java
new file mode 100644
index 0000000000..30e4e2994a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneComponent.java
@@ -0,0 +1,46 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.RichStruct;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioOne;
+import org.apache.tuscany.sca.test.corba.generated.ScenarioOneOperations;
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for reference using generated interface.
+ */
+public class ScenarioOneComponent implements ScenarioOneOperations {
+
+ private ScenarioOne scenarionOne;
+
+ @Reference
+ public void setScenarioOne(ScenarioOne scenarioOne) {
+ this.scenarionOne = scenarioOne;
+ }
+
+ public RichStruct setRichStruct(RichStruct richStruct) throws WrongColor, UnexpectedException {
+ return scenarionOne.setRichStruct(richStruct);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneServant.java
new file mode 100644
index 0000000000..9b49adbfbb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioOneServant.java
@@ -0,0 +1,45 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.Color;
+import org.apache.tuscany.sca.test.corba.generated.RichStruct;
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+import org.apache.tuscany.sca.test.corba.generated._ScenarioOneImplBase;
+
+/**
+ * @version $Rev$ $Date$
+ * Servant for generated interface. Uses generated classes.
+ */
+public class ScenarioOneServant extends _ScenarioOneImplBase {
+
+ private static final long serialVersionUID = 1L;
+
+ public RichStruct setRichStruct(RichStruct richStruct) throws WrongColor, UnexpectedException {
+ if (richStruct.innerStruct.color.value() == Color.red.value()) {
+ throw new WrongColor(richStruct.innerStruct.color, Color.green);
+ } else if (richStruct.longField == 0) {
+ throw new UnexpectedException("Expected richStruct.longField != 0");
+ }
+ return richStruct;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioSixServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioSixServant.java
new file mode 100644
index 0000000000..7889a80bf1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioSixServant.java
@@ -0,0 +1,46 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.AnnotatedStruct;
+import org.apache.tuscany.sca.test.corba.generated.RichUnion;
+import org.apache.tuscany.sca.test.corba.generated._ScenarioSixImplBase;
+
+/**
+ * @version $Rev$ $Date$
+ * Scenario six servant for generated interface.
+ */
+public class ScenarioSixServant extends _ScenarioSixImplBase {
+
+ private static final long serialVersionUID = 1L;
+
+ public String[][] passStringArray(String[][] arg) {
+ return arg;
+ }
+
+ public AnnotatedStruct passAnnotatedStruct(AnnotatedStruct arg) {
+ return arg;
+ }
+
+ public RichUnion passRichUnion(RichUnion arg) {
+ return arg;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioTwoServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioTwoServant.java
new file mode 100644
index 0000000000..cdd49904d3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/ScenarioTwoServant.java
@@ -0,0 +1,42 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated._ScenarioTwoImplBase;
+
+/**
+ * @version $Rev$ $Date$
+ * Servant for generated interface.
+ */
+public class ScenarioTwoServant extends _ScenarioTwoImplBase {
+
+ private static final long serialVersionUID = 1L;
+
+ private String stringField = "";
+
+ public String stringField() {
+ return stringField;
+ }
+
+ public void stringField(String newStringField) {
+ this.stringField = newStringField;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TAnnotatedStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TAnnotatedStruct.java
new file mode 100644
index 0000000000..adb48aa159
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TAnnotatedStruct.java
@@ -0,0 +1,40 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
+
+/**
+ * @version $Rev$ $Date$ Scenario six structure used by Tuscany.
+ */
+public final class TAnnotatedStruct {
+
+ @CorbaArray( {2, 2})
+ public String[][] stringArray;
+
+ public TAnnotatedStruct() {
+
+ }
+
+ public TAnnotatedStruct(String[][] stringArray) {
+ this.stringArray = stringArray;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TColor.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TColor.java
new file mode 100644
index 0000000000..71003d008f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TColor.java
@@ -0,0 +1,62 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided enum representation for Color type.
+ */
+public class TColor {
+
+ private int value;
+
+ public static final int _red = 0;
+ public static final int _yellow = 1;
+ public static final int _green = 2;
+
+ public static final TColor red = new TColor(_red);
+ public static final TColor yellow = new TColor(_yellow);
+ public static final TColor green = new TColor(_green);
+
+ public int value() {
+ return value;
+ }
+
+ public static TColor from_int(int value) {
+ switch (value) {
+ case 0:
+ return red;
+ case 1:
+ return yellow;
+ case 2:
+ return green;
+ }
+ return green;
+ }
+
+ protected TColor(int value) {
+ this.value = value;
+ }
+
+ public TColor() {
+
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerStruct.java
new file mode 100644
index 0000000000..271f1e669b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerStruct.java
@@ -0,0 +1,42 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided interface representation for InnerStruct type.
+ */
+public final class TInnerStruct {
+
+ public int[][] twoDimLongSequence;
+ public String stringField;
+ public TColor color;
+
+ public TInnerStruct() {
+
+ }
+
+ public TInnerStruct(int[][] a1, String a2, TColor a3) {
+ twoDimLongSequence = a1;
+ stringField = a2;
+ color = a3;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerUnion.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerUnion.java
new file mode 100644
index 0000000000..d7734c48a3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TInnerUnion.java
@@ -0,0 +1,59 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided interface representation for CORBA InnerUnion type.
+ */
+public final class TInnerUnion {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ private int x;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 2)
+ private float y;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int discriminator;
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ discriminator = 1;
+ this.x = x;
+ }
+
+ public float getY() {
+ return y;
+ }
+
+ public void setY(float y) {
+ discriminator = 2;
+ this.y = y;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichStruct.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichStruct.java
new file mode 100644
index 0000000000..1b44da9752
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichStruct.java
@@ -0,0 +1,42 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided interface representation for RichStruct type.
+ */
+public final class TRichStruct {
+
+ public TInnerStruct innerStruct;
+ public String[] stringSequence;
+ public int longField;
+
+ public TRichStruct() {
+
+ }
+
+ public TRichStruct(TInnerStruct a1, String[] a2, int a3) {
+ innerStruct = a1;
+ stringSequence = a2;
+ longField = a3;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichUnion.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichUnion.java
new file mode 100644
index 0000000000..eb76c94643
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TRichUnion.java
@@ -0,0 +1,95 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided interface representation for CORBA RichUnion type.
+ */
+public final class TRichUnion {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ private int x;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 2)
+ private float y;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 3)
+ private String z;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 4)
+ private TInnerUnion iu;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.defaultOption)
+ private boolean def;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int discriminator = -1;
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ this.discriminator = 1;
+ this.x = x;
+ }
+
+ public float getY() {
+ return y;
+ }
+
+ public void setY(float y) {
+ this.discriminator = 2;
+ this.y = y;
+ }
+
+ public String getZ() {
+ return z;
+ }
+
+ public void setZ(String z) {
+ this.discriminator = 3;
+ this.z = z;
+ }
+
+ public boolean isDef() {
+ return def;
+ }
+
+ public void setDef(boolean def) {
+ this.discriminator = -1;
+ this.def = def;
+ }
+
+ public TInnerUnion getIu() {
+ return iu;
+ }
+
+ public void setIu(TInnerUnion iu) {
+ this.discriminator = 4;
+ this.iu = iu;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOne.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOne.java
new file mode 100644
index 0000000000..922759cd8d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOne.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+
+/**
+ * @version $Rev$ $Date$
+ * User provided CORBA service interface.
+ */
+public interface TScenarioOne {
+
+ TRichStruct setRichStruct(TRichStruct richStruct) throws WrongColor, UnexpectedException;
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneComponent.java
new file mode 100644
index 0000000000..a4f15488cd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneComponent.java
@@ -0,0 +1,43 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for reference using user provided interface.
+ */
+public class TScenarioOneComponent implements TScenarioOne {
+
+ private TScenarioOne scenarionOne;
+
+ @Reference
+ public void setScenarioOne(TScenarioOne scenarioOne) {
+ this.scenarionOne = scenarioOne;
+ }
+
+ public TRichStruct setRichStruct(TRichStruct richStruct) throws WrongColor, UnexpectedException {
+ return scenarionOne.setRichStruct(richStruct);
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneServant.java
new file mode 100644
index 0000000000..47f0775c16
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioOneServant.java
@@ -0,0 +1,44 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.test.corba.generated.Color;
+import org.apache.tuscany.sca.test.corba.generated.UnexpectedException;
+import org.apache.tuscany.sca.test.corba.generated.WrongColor;
+
+/**
+ * @version $Rev$ $Date$
+ * Servant for user provided interface. Uses T* classes.
+ */
+public class TScenarioOneServant implements TScenarioOne {
+
+ private static final long serialVersionUID = 1L;
+
+ public TRichStruct setRichStruct(TRichStruct richStruct) throws WrongColor, UnexpectedException {
+ if (richStruct.innerStruct.color.value() == Color.red.value()) {
+ Color translatedColor = Color.from_int(richStruct.innerStruct.color.value());
+ throw new WrongColor(translatedColor, Color.green);
+ } else if (richStruct.longField == 0) {
+ throw new UnexpectedException("Expected richStruct.longField != 0");
+ }
+ return richStruct;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSix.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSix.java
new file mode 100644
index 0000000000..3b4943a43d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSix.java
@@ -0,0 +1,37 @@
+/*
+ * 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.test.corba.types;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
+
+/**
+ * @version $Rev$ $Date$
+ * Operations for scenario six.
+ */
+public interface TScenarioSix {
+
+ @CorbaArray( {2, 2})
+ public String[][] passStringArray(@CorbaArray( {2, 2})String[][] arg);
+
+ public TAnnotatedStruct passAnnotatedStruct(TAnnotatedStruct arg);
+
+ public TRichUnion passRichUnion(TRichUnion arg);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixComponent.java
new file mode 100644
index 0000000000..7d43badb23
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixComponent.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for obtaining ScenartioSix reference.
+ */
+public class TScenarioSixComponent {
+
+ private TScenarioSix scenarioSix;
+
+ @Reference
+ public void setScenarioSix(TScenarioSix scenarioSix) {
+ this.scenarioSix = scenarioSix;
+ }
+
+ public TScenarioSix getScenarioSix() {
+ return scenarioSix;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixServant.java
new file mode 100644
index 0000000000..8e76958e31
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioSixServant.java
@@ -0,0 +1,42 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Tuscany scenario six servant.
+ */
+public class TScenarioSixServant implements TScenarioSix {
+
+ private static final long serialVersionUID = 1L;
+
+ public String[][] passStringArray(String[][] arg) {
+ return arg;
+ }
+
+ public TAnnotatedStruct passAnnotatedStruct(TAnnotatedStruct arg) {
+ return arg;
+ }
+
+ public TRichUnion passRichUnion(TRichUnion arg) {
+ return arg;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThree.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThree.java
new file mode 100644
index 0000000000..1e4264256b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThree.java
@@ -0,0 +1,42 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Operations for ScenarioThree.
+ */
+public interface TScenarioThree {
+
+ int getIntField();
+
+ void setIntField(int intField);
+
+ void overloadedName();
+
+ void overloadedName(String arg1);
+
+ void overloadedName(String arg1, int arg2);
+
+ int caseDifferent();
+
+ int CaseDifferent();
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeComponent.java
new file mode 100644
index 0000000000..917cceedf5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeComponent.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for obtaining ScenartioThree reference.
+ */
+public class TScenarioThreeComponent {
+
+ private TScenarioThree scenarionThree;
+
+ @Reference
+ public void setScenarioThree(TScenarioThree scenarioThree) {
+ this.scenarionThree = scenarioThree;
+ }
+
+ public TScenarioThree getScenarioThree() {
+ return scenarionThree;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeServant.java
new file mode 100644
index 0000000000..b679214c6c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioThreeServant.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Servant for user provided interface.
+ */
+public class TScenarioThreeServant implements TScenarioThree {
+
+ public int getIntField() {
+ return 0;
+ }
+
+ public void overloadedName() {
+ }
+
+ public void overloadedName(String arg1) {
+ }
+
+ public void overloadedName(String arg1, int arg2) {
+ }
+
+ public void setIntField(int intField) {
+ }
+
+ public int CaseDifferent() {
+ return 1;
+ }
+
+ public int caseDifferent() {
+ return 0;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwo.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwo.java
new file mode 100644
index 0000000000..415634c80f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwo.java
@@ -0,0 +1,32 @@
+/*
+ * 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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Operations for ScenarioTwo.
+ */
+public interface TScenarioTwo {
+
+ String getStringField();
+
+ void setStringField(String stringField);
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoComponent.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoComponent.java
new file mode 100644
index 0000000000..d7c72b40da
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoComponent.java
@@ -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 org.apache.tuscany.sca.test.corba.types;
+
+import org.osoa.sca.annotations.Reference;
+
+/**
+ * @version $Rev$ $Date$
+ * Component for obtaining ScenartioTwo reference.
+ */
+public class TScenarioTwoComponent {
+
+ private TScenarioTwo scenarioTwo;
+
+ @Reference
+ public void setScenarioTwo(TScenarioTwo scenarioTwo) {
+ this.scenarioTwo = scenarioTwo;
+ }
+
+ public TScenarioTwo getScenarioTwo() {
+ return scenarioTwo;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoServant.java b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoServant.java
new file mode 100644
index 0000000000..cb868d18a0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/java/org/apache/tuscany/sca/test/corba/types/TScenarioTwoServant.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.test.corba.types;
+
+/**
+ * @version $Rev$ $Date$
+ * Servant for user provided interface.
+ */
+public class TScenarioTwoServant implements TScenarioTwo {
+
+ private static String stringField = "";
+
+ public String getStringField() {
+ return stringField;
+ }
+
+ public void setStringField(String stringField) {
+ TScenarioTwoServant.stringField = stringField;
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
new file mode 100644
index 0000000000..3e77527d73
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
@@ -0,0 +1,18 @@
+# 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.
+
+org.apache.tuscany.sca.test.corba.TestCorbaHostModuleActivator
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFive.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFive.composite
new file mode 100644
index 0000000000..3c73e238a5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFive.composite
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFour.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFour.composite
new file mode 100644
index 0000000000..01d7e2314a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioFour.composite
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioOne.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioOne.composite
new file mode 100644
index 0000000000..c10b383661
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioOne.composite
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioSix.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioSix.composite
new file mode 100644
index 0000000000..88238478c1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioSix.composite
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioThree.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioThree.composite
new file mode 100644
index 0000000000..f43e4a3f7a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioThree.composite
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioTwo.composite b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioTwo.composite
new file mode 100644
index 0000000000..dc5ddc50d3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/ScenarioTwo.composite
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/itest_scenario.idl b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/itest_scenario.idl
new file mode 100644
index 0000000000..41489a4565
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/itest_scenario.idl
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+
+/*
+ * compile by
+ * idlj -fall -oldImplBase itest_scenario.idl
+ */
+
+module org {
+ module apache {
+ module tuscany {
+ module sca {
+ module test {
+ module corba {
+ module generated {
+
+ // objects for ScenarioOne
+
+ enum Color {red, yellow, green};
+
+ typedef sequence StringSequence;
+ typedef sequence LongSequence;
+ typedef sequence TwoDimLongSequence;
+
+ struct InnerStruct {
+ TwoDimLongSequence twoDimLongSequence;
+ string stringField;
+ Color color;
+ };
+
+ struct RichStruct {
+ InnerStruct innerStruct;
+ StringSequence stringSequence;
+ long longField;
+ };
+
+ exception WrongColor {
+ Color givenColor;
+ Color correctColor;
+ };
+
+ exception UnexpectedException {
+ string info;
+ };
+
+ interface ScenarioOne {
+
+ RichStruct setRichStruct(in RichStruct richStruct) raises (WrongColor, UnexpectedException);
+
+ };
+
+ // objects for ScenarioTwo
+
+ interface ScenarioTwo {
+
+ attribute string stringField;
+
+ };
+
+ typedef string StringArray[2][2];
+
+ struct AnnotatedStruct {
+ StringArray stringArray;
+ };
+
+ union InnerUnion switch (long) {
+ case 1: long x;
+ case 2: float y;
+ };
+
+ union RichUnion switch (long) {
+ case 1: long x;
+ case 2: float y;
+ case 3: string z;
+ case 4: InnerUnion iu;
+ default: boolean a;
+ };
+
+ interface ScenarioSix {
+
+ StringArray passStringArray(in StringArray arg);
+
+ AnnotatedStruct passAnnotatedStruct(in AnnotatedStruct arg);
+
+ RichUnion passRichUnion(in RichUnion arg);
+
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+};
diff --git a/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/scenariofour.xsd b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/scenariofour.xsd
new file mode 100644
index 0000000000..2669b54be3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/corba/src/test/resources/scenariofour.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/pom.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/pom.xml
new file mode 100644
index 0000000000..da93a73f53
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/pom.xml
@@ -0,0 +1,126 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.5.1
+
+
+ 4.0.0
+
+ itest-databindings-common
+ 1.5.1
+ jar
+ Apache Tuscany SCA iTest Databinding Common
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ http://download.java.net/maven/1
+ legacy
+
+
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ http://download.java.net/maven/1
+ legacy
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-tools
+ 1.1.1
+ compile
+
+
+ velocity
+ velocity
+ 1.4
+ compile
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.0
+
+
+ add-test-source
+ generate-sources
+
+ add-test-source
+
+
+
+ target/sdo-source
+
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.1.1
+
+
+ generate-sdo
+ generate-sources
+
+
+
+ ${basedir}/src/main/resources/generate/generate.xsd
+
+
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.java b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.java
new file mode 100644
index 0000000000..adb546a1ea
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.java
@@ -0,0 +1,181 @@
+/*
+ * 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.itest.generate;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.tuscany.generate.GenerateFactory;
+import org.apache.tuscany.generate.GenerateType;
+import org.apache.tuscany.generate.InputFileType;
+import org.apache.tuscany.generate.TemplateType;
+import org.apache.tuscany.sdo.generate.XSD2JavaGenerator;
+import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
+
+/**
+ * Generates test files based on the information in a configuration files (generate.xml)
+ * and a set of velocity templates. The process is
+ *
+ * for each template
+ * for each xsd file
+ * generate SDOs
+ * include the factory into the composite
+ * for each type
+ * add client iface method
+ * add client impl method
+ * add service iface method
+ * add service impl method
+ * add test method
+ * add wsdl type and method
+ *
+ * @version $Rev$ $Date$
+ */
+public class Generate {
+
+ /**
+ * Does all the hard work of running the velocity templates against the
+ * the list of types to test. Both the list of templates and the list of
+ * XSD files is held in the configuration file (generate.xsd) which lives in the
+ * resources/generate directory of the project being generated.
+ *
+ * @param projectBuildDir the path to the target dir of the project being generated.
+ */
+ public static void generate(String projectBuildDir) {
+ System.out.println(">> Building project from dir: " + projectBuildDir);
+ FileInputStream fis = null;
+
+ try {
+ // Load the config file into a stream
+ fis = new FileInputStream(projectBuildDir + "/classes/generate/generate.xml");
+
+ // Load the stream into SDO
+ // We are just using SDO as a convenient way to parse the XML config file
+ HelperContext scope = SDOUtil.createHelperContext();
+ GenerateFactory.INSTANCE.register(scope);
+ XMLDocument xmlDoc = scope.getXMLHelper().load(fis);
+ GenerateType generateType = (GenerateType)xmlDoc.getRootObject();
+
+ // Get the file list. This is the list of XSD that is passed into the
+ // the velocity templates. Each configured file holds a list of types
+ // that the velocity templates expand into appropriate methods and method calls
+ List fileList = generateType.getInputFile();
+
+ //Initialise velocity ready to generate the various files
+ Properties p = new Properties();
+ p.setProperty("file.resource.loader.path", projectBuildDir + "/classes/generate");
+ Velocity.init(p);
+ VelocityContext context = new VelocityContext();
+ context.put("fileList", fileList);
+
+ List templateList = generateType.getTemplate();
+
+ // For each velocity template in the template list pass in the XSD file list
+ for ( Object item: templateList){
+ TemplateType template = (TemplateType)item;
+ context.put("template", template);
+ String tmp = template.getTemplateName();
+ String filename = projectBuildDir + "/" + template.getTemplateTargetDir() + "/" + tmp.substring(0,tmp.length() - 3);
+ File f = new File(filename);
+ // Create folders since the package doesn't exist before the code-gen for the 1st time
+ f.getParentFile().mkdirs();
+ FileWriter fw = new FileWriter(f);
+ System.out.println(">> Processing " + template.getTemplateName() + " to " + filename);
+ Velocity.mergeTemplate(template.getTemplateName(), context, fw );
+ fw.flush();
+ fw.close();
+ }
+
+
+ } catch (Exception e) {
+ System.out.println("Exception : " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+ }
+
+ /**
+ * The SDO generator tool does all of the hard work
+ *
+ * @param projectBuildDir the path to the target dir of the project being generated.
+ */
+ public static void generateSDO(String projectBuildDir) {
+ System.out.println(">> Building SDOs from dir: " + projectBuildDir);
+ FileInputStream fis = null;
+
+ try {
+ // Load the config file into a stream
+ fis = new FileInputStream(projectBuildDir + "/classes/generate/generate.xml");
+
+ // Load the stream into SDO
+ // We are just using SDO as a convenient way to parse the XML config file
+ HelperContext scope = SDOUtil.createHelperContext();
+ GenerateFactory.INSTANCE.register(scope);
+ XMLDocument xmlDoc = scope.getXMLHelper().load(fis);
+ GenerateType generateType = (GenerateType)xmlDoc.getRootObject();
+
+ // Get the file list. This is the list of XSD that is passed into the
+ // the velocity templates. Each configured file holds a list of types
+ // that the velocity templates expand into appropriate methods and method calls
+ List fileList = generateType.getInputFile();
+
+ // for each XSD in the XSD file list generate an SDO.
+ XSD2JavaGenerator generator = new XSD2JavaGenerator();
+
+ for ( Object item : fileList){
+ InputFileType file = (InputFileType)item;
+
+ XSD2JavaGenerator.generateFromXMLSchema(projectBuildDir + "/classes/xsd/" + file.getFileName(),
+ file.getNamespace(),
+ projectBuildDir + "/sdo-source",
+ file.getJavaPackage(),
+ null, //file.getPrefix(),
+ XSD2JavaGenerator.OPTION_NO_CONTAINMENT | XSD2JavaGenerator.OPTION_NO_NOTIFICATION | XSD2JavaGenerator.OPTION_NO_UNSETTABLE);
+
+ }
+
+ } catch (Exception e) {
+ System.out.println("Exception : " + e.toString());
+ e.printStackTrace();
+ return;
+ }
+ }
+
+ /**
+ * The mainline
+ *
+ * @param args the target directory where project in which files are being generated
+ */
+ public static void main(String[] args) {
+
+ Generate.generate(args[0]);
+
+ if (args.length > 1){
+ Generate.generateSDO(args[0]);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/DatabindingTestCase.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/DatabindingTestCase.java.vm
new file mode 100644
index 0000000000..b2346aa973
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/DatabindingTestCase.java.vm
@@ -0,0 +1,112 @@
+/*
+ * 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 $template.getJavaPackage();
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.ServiceReference;
+
+import ${template.getJavaPackage()}.GreeterService;
+
+// Data types
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+import $file.getJavaPackage().$file.getFactory();
+#end
+#end
+
+/**
+ * Automatically generated test case. Calls the greeter client for a number of
+ * bindings and a number of data types.
+ *
+ * @version $Rev: 511417 $ $Date: 2007-02-25 03:06:42 +0000 (Sun, 25 Feb 2007) $
+ */
+public class DatabindingTestCase extends TestCase {
+
+ private SCADomain domain;
+ private GreeterService greeterClient;
+
+ /**
+ * Runs before each test method
+ */
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("greeter.composite");
+ super.setUp();
+ }
+
+ /**
+ * Runs after each test method
+ */
+ protected void tearDown() {
+ domain.close();
+ }
+
+ /**
+ * Finds the SCA component that relates to the protocol being tested. This test
+ * always connects locally to the client component but the client component will
+ * connect to the back end component using the appropriate protocol
+ *
+ * @param ext the protcol required
+ */
+ private void setUpClient(String ext) throws Exception {
+ greeterClient = domain.getService(GreeterService.class, ext + "GreeterServiceClient");
+ }
+
+ /**
+ * Invokes the SDO Greet service using web service bindings with SDO payload
+ */
+ public void testWSGreet() throws Exception {
+ setUpClient("WS");
+ greet();
+ }
+
+ /**
+ * Invokes the SDO Greet service using default bindings with SDO payload
+ */
+ public void testDefaultGreet() throws Exception {
+ setUpClient("Default");
+ greet();
+ }
+
+ /**
+ * A generic method which, regarless of which client is connected, sends out a
+ * series of requrests passing different data types.
+ */
+ public void greet() {
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+ // test $typeInstance.getTypeName()
+ {
+ $typeInstance.getTypeName() param = null;
+ $typeInstance.getCreateTypeCode()
+ $typeInstance.getTypeName() result = greeterClient.greet$typeInstance.getTypeName()(param);
+ $typeInstance.getResultComparison()
+ }
+#end
+#end
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/Greeter.wsdl.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/Greeter.wsdl.vm
new file mode 100644
index 0000000000..88616cc997
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/Greeter.wsdl.vm
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+#foreach($file in $fileList)
+
+#end
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+#end
+#end
+
+
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+
+
+#end
+#end
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterService.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterService.java.vm
new file mode 100644
index 0000000000..77a12e92ec
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterService.java.vm
@@ -0,0 +1,53 @@
+/*
+ * 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 $template.getJavaPackage();
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+#end
+#end
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The automatically generated interface to the service that reflects data objects
+ * that are sent to it
+ *
+ * @version $Rev: 511417 $ $Date: 2007-02-25 03:06:42 +0000 (Sun, 25 Feb 2007) $
+ */
+@Remotable
+public interface GreeterService {
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+ /**
+ * Take the provided data object, change it slightly and return it
+ *
+ * @param param the data object to be changed and returned
+ * @return the change data object
+ */
+ $typeInstance.getTypeName() greet$typeInstance.getTypeName()($typeInstance.getTypeName() param);
+#end
+#end
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClient.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClient.java.vm
new file mode 100644
index 0000000000..ee73db6152
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClient.java.vm
@@ -0,0 +1,42 @@
+/*
+ * 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 $template.getJavaPackage();
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+#end
+#end
+
+import org.osoa.sca.annotations.AllowsPassByReference;
+
+/**
+ * GreeterServiceClient
+ */
+@AllowsPassByReference
+public interface GreeterServiceClient {
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+ $typeInstance.getTypeName() greet$typeInstance.getTypeName()($typeInstance.getTypeName() param);
+#end
+#end
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClientImpl.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClientImpl.java.vm
new file mode 100644
index 0000000000..aab564dc1e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceClientImpl.java.vm
@@ -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 $template.getJavaPackage();
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+#end
+#end
+
+/**
+ * The automatically generated service that simply forwards data objects on to
+ * the GreeterService and passes back the responses
+ *
+ * @version $Rev: 508831 $ $Date: 2007-02-18 00:12:31 +0000 (Sun, 18 Feb 2007) $
+ */
+@Service(GreeterService.class)
+public class GreeterServiceClientImpl implements GreeterService {
+
+ /**
+ * the reference the the GreeterService that will
+ * change each data object slightly and return it
+ */
+ private GreeterService service;
+
+ @Reference
+ public void setGreeterService(GreeterService service) {
+ this.service = service;
+ }
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.itest.sdodatabinding.GreeterService#greet$typeInstance.getTypeName()($typeInstance.getTypeName() param)
+ */
+ public $typeInstance.getTypeName() greet$typeInstance.getTypeName()($typeInstance.getTypeName() param) {
+ return service.greet$typeInstance.getTypeName()(param);
+ }
+#end
+#end
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceImpl.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceImpl.java.vm
new file mode 100644
index 0000000000..5507a0b747
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/GreeterServiceImpl.java.vm
@@ -0,0 +1,55 @@
+/*
+ * 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 $template.getJavaPackage();
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+#end
+#end
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * The automatically generated service implementation that reflects data objects
+ * that are sent to it
+ *
+ * @version $Rev: 511417 $ $Date: 2007-02-25 03:06:42 +0000 (Sun, 25 Feb 2007) $
+ */
+@Service(GreeterService.class)
+public class GreeterServiceImpl implements GreeterService {
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+ /**
+ * Take the provided data object, change it slightly and return it
+ *
+ * @param param the data object to be changed and returned
+ * @return the change data object
+ */
+ public $typeInstance.getTypeName() greet$typeInstance.getTypeName()($typeInstance.getTypeName() param) {
+ $typeInstance.getModifyTypeCode()
+ return param;
+ }
+#end
+#end
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/generate.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/generate.xsd
new file mode 100644
index 0000000000..1fabedf55f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/generate/generate.xsd
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/wsdl/Dummy.txt b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/wsdl/Dummy.txt
new file mode 100644
index 0000000000..8927d725b6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/wsdl/Dummy.txt
@@ -0,0 +1,4 @@
+A dummy file that causes the target/classes/wsdl dir to be created in the generated test project. This is
+required because the test generator must run in the process-resource phase, after generate.xml has been copied
+into target. The generator needs to write out target/classes/wsdl and will fail the directory isn't there. So
+this file just gets unpacked and forces the directory to be created.
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xml
new file mode 100644
index 0000000000..f1f4346e58
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xsd
new file mode 100644
index 0000000000..1fae43eb09
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Annotation.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+ SDO 2.0.1
+
+ A schema that tests the presence of annotations in schema read by SDO
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xml
new file mode 100644
index 0000000000..c20c80b658
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xsd
new file mode 100644
index 0000000000..bd3db2e030
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Attribute.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml
new file mode 100644
index 0000000000..30e4979dca
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd
new file mode 100644
index 0000000000..e7738dcff7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml
new file mode 100644
index 0000000000..9552421e2d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd
new file mode 100644
index 0000000000..c7b9655749
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml
new file mode 100644
index 0000000000..5e5e7fbd55
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd
new file mode 100644
index 0000000000..5c455c2ab5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml
new file mode 100644
index 0000000000..635e851632
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd
new file mode 100644
index 0000000000..004dab4fbb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml
new file mode 100644
index 0000000000..136092951b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd
new file mode 100644
index 0000000000..796f08e1cf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml
new file mode 100644
index 0000000000..927b94885c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd
new file mode 100644
index 0000000000..93f83cd0a1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml
new file mode 100644
index 0000000000..ea7db70595
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd
new file mode 100644
index 0000000000..c64323e7e1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml
new file mode 100644
index 0000000000..85c7d85fd4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd
new file mode 100644
index 0000000000..543f276c50
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml
new file mode 100644
index 0000000000..fcd281539b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd
new file mode 100644
index 0000000000..1610c2b861
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml
new file mode 100644
index 0000000000..36a0760a61
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ anySimpleType
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd
new file mode 100644
index 0000000000..999b72bb35
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml
new file mode 100644
index 0000000000..5849165fe0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd
new file mode 100644
index 0000000000..71dad561ca
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml
new file mode 100644
index 0000000000..8acf9376d7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml
@@ -0,0 +1,24 @@
+
+
+
+ http://tempuri.org
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd
new file mode 100644
index 0000000000..a49987c352
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml
new file mode 100644
index 0000000000..a35b6e174a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml
@@ -0,0 +1,24 @@
+
+
+
+ ABCDEF
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd
new file mode 100644
index 0000000000..e1995890f9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml
new file mode 100644
index 0000000000..91cfce51b8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml
@@ -0,0 +1,27 @@
+
+
+
+ true
+ false
+ 1
+ 0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd
new file mode 100644
index 0000000000..a2f86ba8c5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml
new file mode 100644
index 0000000000..907474cd1b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml
@@ -0,0 +1,25 @@
+
+
+
+ 127
+ -127
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd
new file mode 100644
index 0000000000..a2f6bcfa77
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml
new file mode 100644
index 0000000000..c5820e1a2e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001-01-01
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd
new file mode 100644
index 0000000000..f4d596bfe3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xml
new file mode 100644
index 0000000000..0debe2fec5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001-12-31T12:00:00
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd
new file mode 100644
index 0000000000..b5bcfdcfd4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml
new file mode 100644
index 0000000000..7f001254cc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml
@@ -0,0 +1,23 @@
+
+
+
+ -1.23456789
+ 1.23456789
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd
new file mode 100644
index 0000000000..8d4d106f59
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xml
new file mode 100644
index 0000000000..f875b9f94d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0.0
+ 12.3E-4
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd
new file mode 100644
index 0000000000..4c8a39b06c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml
new file mode 100644
index 0000000000..7d343d6dda
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml
@@ -0,0 +1,24 @@
+
+
+
+ P1D
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd
new file mode 100644
index 0000000000..bb12bc04a9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml
new file mode 100644
index 0000000000..7a81f3b0dd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0.0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd
new file mode 100644
index 0000000000..f0e1c21233
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml
new file mode 100644
index 0000000000..d35568b3c9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml
@@ -0,0 +1,24 @@
+
+
+
+ ---01
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd
new file mode 100644
index 0000000000..92bd9a4b66
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml
new file mode 100644
index 0000000000..52cdfa8c4e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml
@@ -0,0 +1,24 @@
+
+
+
+ --01--
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd
new file mode 100644
index 0000000000..78d001a585
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml
new file mode 100644
index 0000000000..2609a858f7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml
@@ -0,0 +1,24 @@
+
+
+
+ --01-01
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd
new file mode 100644
index 0000000000..38f6c55059
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml
new file mode 100644
index 0000000000..7868a47ca3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd
new file mode 100644
index 0000000000..0d65b124ff
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml
new file mode 100644
index 0000000000..3f5080d49f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001-01
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd
new file mode 100644
index 0000000000..340555dc5f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml
new file mode 100644
index 0000000000..0deb7af980
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0F00
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd
new file mode 100644
index 0000000000..8059fe6da0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml
new file mode 100644
index 0000000000..06c92ce19b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd
new file mode 100644
index 0000000000..7b1f02d1d4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml
new file mode 100644
index 0000000000..9bc0cefd0f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd
new file mode 100644
index 0000000000..0c207983bc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml
new file mode 100644
index 0000000000..f91b602f99
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd
new file mode 100644
index 0000000000..b99bf01b73
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml
new file mode 100644
index 0000000000..c99698e175
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml
@@ -0,0 +1,25 @@
+
+
+
+ -2147483648
+ 2147483647
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd
new file mode 100644
index 0000000000..b5b9b0d1eb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml
new file mode 100644
index 0000000000..80d22ce057
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml
@@ -0,0 +1,25 @@
+
+
+
+ -2147483648
+ 2147483647
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd
new file mode 100644
index 0000000000..4902935db5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml
new file mode 100644
index 0000000000..664bf824b4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml
@@ -0,0 +1,24 @@
+
+
+
+ EN
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd
new file mode 100644
index 0000000000..5d3658d224
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml
new file mode 100644
index 0000000000..c5861fa92a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml
@@ -0,0 +1,25 @@
+
+
+
+ -9223372036854775808
+ 9223372036854775807
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd
new file mode 100644
index 0000000000..0aa4710057
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml
new file mode 100644
index 0000000000..1f95950394
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml
@@ -0,0 +1,24 @@
+
+
+
+ NCName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd
new file mode 100644
index 0000000000..6ee9c435db
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml
new file mode 100644
index 0000000000..0297f1aeb4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml
@@ -0,0 +1,24 @@
+
+
+
+ NMTOKEN
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd
new file mode 100644
index 0000000000..56d027bdbb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml
new file mode 100644
index 0000000000..81ba1069bd
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml
@@ -0,0 +1,24 @@
+
+
+
+ NMTOKENS
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd
new file mode 100644
index 0000000000..866ab73024
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml
new file mode 100644
index 0000000000..8bb3a08b94
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml
@@ -0,0 +1,24 @@
+
+
+
+ tns:BuiltInNotationNotation
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd
new file mode 100644
index 0000000000..c7c62f812b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml
new file mode 100644
index 0000000000..8235718c5e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml
@@ -0,0 +1,24 @@
+
+
+
+ Name
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd
new file mode 100644
index 0000000000..36caba2f16
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml
new file mode 100644
index 0000000000..599c428a44
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ -1
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd
new file mode 100644
index 0000000000..389d5a99f0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml
new file mode 100644
index 0000000000..919c4a20ee
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd
new file mode 100644
index 0000000000..59887078b5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml
new file mode 100644
index 0000000000..79011f26ab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ -1
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd
new file mode 100644
index 0000000000..5de7d64d7b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml
new file mode 100644
index 0000000000..c40be9e18b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml
@@ -0,0 +1,24 @@
+
+
+
+ normalizedString
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd
new file mode 100644
index 0000000000..d4a78787b8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml
new file mode 100644
index 0000000000..c30434de66
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ 1
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd
new file mode 100644
index 0000000000..5381590cd1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml
new file mode 100644
index 0000000000..4cd6ea7e72
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml
@@ -0,0 +1,24 @@
+
+
+
+ QName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd
new file mode 100644
index 0000000000..e8faf6225b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml
new file mode 100644
index 0000000000..b4375467c4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml
@@ -0,0 +1,25 @@
+
+
+
+ -32768
+ 32767
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd
new file mode 100644
index 0000000000..a4f564d9b7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml
new file mode 100644
index 0000000000..d30ab85530
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml
@@ -0,0 +1,24 @@
+
+
+
+ string
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd
new file mode 100644
index 0000000000..8abb34b5a5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml
new file mode 100644
index 0000000000..7fd9a061ae
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml
@@ -0,0 +1,24 @@
+
+
+
+ 12:00:00
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd
new file mode 100644
index 0000000000..1615976813
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml
new file mode 100644
index 0000000000..cd567ba528
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml
@@ -0,0 +1,24 @@
+
+
+
+ token
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd
new file mode 100644
index 0000000000..0beaac571f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml
new file mode 100644
index 0000000000..025362defb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 255
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd
new file mode 100644
index 0000000000..d6d951fe5d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml
new file mode 100644
index 0000000000..5736a8c121
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 4294967295
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd
new file mode 100644
index 0000000000..242be1d53b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml
new file mode 100644
index 0000000000..d728115a77
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 18446744073709551615
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd
new file mode 100644
index 0000000000..108e3a8619
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml
new file mode 100644
index 0000000000..d4ffae5e17
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 65535
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd
new file mode 100644
index 0000000000..5ee5e0229e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml
new file mode 100644
index 0000000000..3d5aed5aa8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd
new file mode 100644
index 0000000000..e7b80ab11c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml
new file mode 100644
index 0000000000..2b4fe5594e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ SimpleTypeWithName
+ SimpleTypeWithNameExtended
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd
new file mode 100644
index 0000000000..fc4deb63c2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml
new file mode 100644
index 0000000000..03570f41d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ComplexTypeExtendingSimpeTypeElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd
new file mode 100644
index 0000000000..c754502645
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml
new file mode 100644
index 0000000000..4603793bfc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ComplexTypeSimpleContentRestrictingComplexTypeElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd
new file mode 100644
index 0000000000..4bcd2f8c46
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml
new file mode 100644
index 0000000000..a6861f803a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ BaseElement
+ ExtensionElement
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd
new file mode 100644
index 0000000000..8bb251cab2
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xml
new file mode 100644
index 0000000000..467ec007ed
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ Some
+ ]]>
+ Mixed
+ SimpleType]]>WithName
+ Content
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd
new file mode 100644
index 0000000000..8d00646678
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml
new file mode 100644
index 0000000000..7deafd798a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd
new file mode 100644
index 0000000000..72ac75fee0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml
new file mode 100644
index 0000000000..f6208f81b3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ Some
+ Mixed
+ SimpleTypeWithName
+ Content
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd
new file mode 100644
index 0000000000..1f26e13673
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml
new file mode 100644
index 0000000000..97de7b98eb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd
new file mode 100644
index 0000000000..67716553d8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml
new file mode 100644
index 0000000000..5941348921
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ Some
+ Mixed
+ SimpleTypeWithName
+ Content
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd
new file mode 100644
index 0000000000..24d5d09054
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml
new file mode 100644
index 0000000000..f684d06a4d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ SomeData
+
+
+ idvalue2
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd
new file mode 100644
index 0000000000..de4a8a666d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml
new file mode 100644
index 0000000000..242908bd27
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd
new file mode 100644
index 0000000000..4c00fbe295
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml
new file mode 100644
index 0000000000..925e8625d5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd
new file mode 100644
index 0000000000..b12bec040b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml
new file mode 100644
index 0000000000..c73708ce46
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd
new file mode 100644
index 0000000000..795c3ea7d9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml
new file mode 100644
index 0000000000..3ebdc89ae0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd
new file mode 100644
index 0000000000..21546d0f67
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml
new file mode 100644
index 0000000000..89657e42ca
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd
new file mode 100644
index 0000000000..d01b4172e4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml
new file mode 100644
index 0000000000..82fd1eedaf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml
@@ -0,0 +1,23 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd
new file mode 100644
index 0000000000..e1dcf06194
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml
new file mode 100644
index 0000000000..ebf03c9d5d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ ElementInAllOne
+ ElementInAllTwo
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd
new file mode 100644
index 0000000000..8b9ba5b4b8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml
new file mode 100644
index 0000000000..26466b1b39
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml
@@ -0,0 +1,25 @@
+
+
+
+ Element1InChoice
+ Element2InChoice
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd
new file mode 100644
index 0000000000..ff418c56ab
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml
new file mode 100644
index 0000000000..27bb1ce9cc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ChangeSummaryText
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd
new file mode 100644
index 0000000000..2bf1df8c99
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml
new file mode 100644
index 0000000000..9b5561ed43
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithDefaultDefault
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd
new file mode 100644
index 0000000000..0b4e7bdf45
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml
new file mode 100644
index 0000000000..f1b7cd264c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithFixedFixed
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd
new file mode 100644
index 0000000000..a2c8456257
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml
new file mode 100644
index 0000000000..1f60b0423f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithSDODataTypeElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd
new file mode 100644
index 0000000000..21e55ab8c1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml
new file mode 100644
index 0000000000..30762f4912
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd
new file mode 100644
index 0000000000..5bf35d0d70
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml
new file mode 100644
index 0000000000..2dd01e4090
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd
new file mode 100644
index 0000000000..6920cd8dd0
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml
new file mode 100644
index 0000000000..6a526bdc47
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithSDOStringElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd
new file mode 100644
index 0000000000..1117a95eb8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xml
new file mode 100644
index 0000000000..ab91458bff
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+ ElementInSubstitutionGroupBase
+
+
+
+ Some Data
+
+
+
+ ElementInSubstitutionGroupBase
+
+
+ ElementInSubstitutionGroupExtends
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd
new file mode 100644
index 0000000000..3e015843b5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml
new file mode 100644
index 0000000000..b6d68fd08a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml
@@ -0,0 +1,25 @@
+
+
+
+ ElementWithMaxOccursElement1
+ ElementWithMaxOccursElement2
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd
new file mode 100644
index 0000000000..d4453a4477
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml
new file mode 100644
index 0000000000..6de3adc937
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithNillableElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd
new file mode 100644
index 0000000000..786ab226da
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml
new file mode 100644
index 0000000000..64093aa803
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithSDOAliasName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd
new file mode 100644
index 0000000000..01f4c2b1ef
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml
new file mode 100644
index 0000000000..774646f682
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithSDONameElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd
new file mode 100644
index 0000000000..34da37564c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml
new file mode 100644
index 0000000000..a1fb3aa803
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd
new file mode 100644
index 0000000000..8eb7a4fce4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml
new file mode 100644
index 0000000000..f68eb1939d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ GlobalElementSimpleType
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd
new file mode 100644
index 0000000000..b9f77e6658
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xml
new file mode 100644
index 0000000000..fd28850050
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ SimpleTypeWithName
+
+ SomeString
+ SomeString
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xsd
new file mode 100644
index 0000000000..eae93fd44a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Import.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd
new file mode 100644
index 0000000000..a7e568decf
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xml
new file mode 100644
index 0000000000..d4b9e24fa6
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xsd
new file mode 100644
index 0000000000..34ff314a19
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Include.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Interop.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Interop.xsd
new file mode 100644
index 0000000000..ae22ab2c44
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Interop.xsd
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xml
new file mode 100644
index 0000000000..b75ac6500a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xml
@@ -0,0 +1,24 @@
+
+
+
+tns:Tuscany
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xsd
new file mode 100644
index 0000000000..6ad019cb81
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Notation.xsd
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Person.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Person.xsd
new file mode 100644
index 0000000000..5f5021b15e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/Person.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml
new file mode 100644
index 0000000000..6c5ad88ff4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml
@@ -0,0 +1,25 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd
new file mode 100644
index 0000000000..6b7e39b334
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml
new file mode 100644
index 0000000000..f9d4a24a49
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithAbstractExtensionElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd
new file mode 100644
index 0000000000..f649e2ba83
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml
new file mode 100644
index 0000000000..410df4b7e4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithExtendedInstanceClassElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd
new file mode 100644
index 0000000000..5d27ef5ce1
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml
new file mode 100644
index 0000000000..7b74867c03
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithInstanceClassElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd
new file mode 100644
index 0000000000..ec16a678a3
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml
new file mode 100644
index 0000000000..708d526f44
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml
@@ -0,0 +1,24 @@
+
+
+
+ listmember1 listmember2
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd
new file mode 100644
index 0000000000..ed681009f9
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml
new file mode 100644
index 0000000000..e404ac86b7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithNameElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd
new file mode 100644
index 0000000000..af0431f048
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml
new file mode 100644
index 0000000000..c86a0f6bcb
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithSDONameElement
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd
new file mode 100644
index 0000000000..89b00a36cc
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml
new file mode 100644
index 0000000000..399b0d8175
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml
@@ -0,0 +1,25 @@
+
+
+
+ EN
+ 01:02:03
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd
new file mode 100644
index 0000000000..ea35bec61a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml
new file mode 100644
index 0000000000..bc8cf35368
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithoutName
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd
new file mode 100644
index 0000000000..57981e3666
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml
new file mode 100644
index 0000000000..da2929776e
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd
new file mode 100644
index 0000000000..ace5427786
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/datagraph.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/datagraph.xsd
new file mode 100644
index 0000000000..e6b9697a8d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/datagraph.xsd
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Expected type is emof:Package.
+
+
+
+
+
+
+
+
+
+
+ Expected type is xsd:schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd
new file mode 100644
index 0000000000..7387568942
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd
new file mode 100644
index 0000000000..c5aabc9cc8
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/test/java/org/apache/tuscany/sca/itest/generate/GenerateTestCase.java b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/test/java/org/apache/tuscany/sca/itest/generate/GenerateTestCase.java
new file mode 100644
index 0000000000..fa3f310d4d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/common/src/test/java/org/apache/tuscany/sca/itest/generate/GenerateTestCase.java
@@ -0,0 +1,49 @@
+/*
+ * 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.itest.generate;
+
+import junit.framework.TestCase;
+
+
+/**
+ *
+ */
+public class GenerateTestCase extends TestCase {
+
+ //private Generate generator = null;
+
+ @Override
+ protected void setUp() throws Exception {
+ //generator = new Generate();
+ }
+
+ @Override
+ protected void tearDown() {
+ }
+
+ /**
+ * Invokes the Generate class to generate databinding test classes and resources.
+ *
+ * @throws Exception
+ */
+ public void testGenerate() throws Exception {
+ //generator.generate();
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/config.png b/tags/java/sca/1.5.1-RC2/itest/databindings/config.png
new file mode 100644
index 0000000000..7912019e9d
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/databindings/config.png differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/config.svg b/tags/java/sca/1.5.1-RC2/itest/databindings/config.svg
new file mode 100644
index 0000000000..aaf027e2df
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/config.svg
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+ <tns:Generate ...> <Template> <TemplateName>greeter.composite.vm</TemplateName> <TemplateTargetDir>classes</TemplateTargetDir> </Template> ... <InputFile> <FileName>Person.xsd</FileName> <FilePath>xsd</FilePath> <JavaPackage>org.apache.tuscany.sca.itest.databinding.types</JavaPackage> <Factory>TypesFactory</Factory> <Namespace>http://apache.org/tuscany/sca/itest/databinding/types</Namespace> <Prefix>p</Prefix> <Type> <TypeName>PersonType</TypeName> <CreateTypeCode> TypesFactory factory = TypesFactory.INSTANCE; param = factory.createPersonType(); param.setFirstName("George"); param.setLastName("Doors"); </CreateTypeCode> <ModifyTypeCode> param.setGreeting("Hello"); </ModifyTypeCode> <ResultComparison> assertNotSame("greetedPerson.getGreeting() not set", "", result.getGreeting()); </ResultComparison> </Type> </InputFile> ... </tns:Generate>
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.png b/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.png
new file mode 100644
index 0000000000..76a9c71b7d
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.png differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.svg b/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.svg
new file mode 100644
index 0000000000..d6850ccf7d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/databinding.svg
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+ GreeterService
+
+ DefaultGreeter ServiceClient
+
+
+ GreeterService Component
+
+ WSGreeter ServiceClient
+
+
+
+
+ WS Reference WS Service
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop.png b/tags/java/sca/1.5.1-RC2/itest/databindings/interop.png
new file mode 100644
index 0000000000..005e0f24ea
Binary files /dev/null and b/tags/java/sca/1.5.1-RC2/itest/databindings/interop.png differ
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop.svg b/tags/java/sca/1.5.1-RC2/itest/databindings/interop.svg
new file mode 100644
index 0000000000..03897c6d09
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop.svg
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+ InteropGreeterService
+
+ SDO DefaultGreeter ServiceClient
+
+
+ SDO GreeterService Component
+
+ SDO WSGreeter ServiceClient
+
+
+
+ WS Reference WS Service
+ JAXB DefaultGreeter ServiceClient
+
+
+ JAXB WSGreeter ServiceClient
+
+
+
+ WS Reference WS Service
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/pom.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/pom.xml
new file mode 100644
index 0000000000..fd4bc7c0a5
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/pom.xml
@@ -0,0 +1,223 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.5.1
+
+
+ 4.0.0
+
+ itest-databindings-interop
+ 1.5.1
+ jar
+ Apache Tuscany SCA iTest DataBinding Interop
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ http://download.java.net/maven/1
+ legacy
+
+
+ java.net2
+ java.net Maven 2.x Repository
+ http://download.java.net/maven/2
+
+
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ http://download.java.net/maven/1
+ legacy
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-jaxb
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ ${pom.version}
+ compile
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ compile
+
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1.3
+
+
+ org.apache.tuscany.sca
+ itest-databindings-common
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ itest-databindings-sdo
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ itest-databindings-jaxb
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-java-xml
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.5.1
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ -Djava.endorsed.dirs=target/endorsed
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ generate-sources
+
+ unpack
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings-common
+ ${project.version}
+ true
+ ${project.build.directory}/classes
+
+
+
+
+
+ copy
+ generate-sources
+
+ copy
+
+
+
+
+ javax.xml.ws
+ jaxws-api
+ 2.1
+ jar
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ jar
+
+
+ ${project.build.directory}/endorsed
+ false
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ generate-test-source
+ process-resources
+
+ java
+
+
+
+
+ org.apache.tuscany.sca.itest.generate.Generate
+
+ ${project.build.directory}
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/InteropDatabindingTestCase.java.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/InteropDatabindingTestCase.java.vm
new file mode 100644
index 0000000000..7bdfc57924
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/InteropDatabindingTestCase.java.vm
@@ -0,0 +1,113 @@
+/*
+ * 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 $template.getJavaPackage();
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import ${template.getJavaPackage()}.GreeterService;
+
+// Data types
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+import $file.getJavaPackage().$typeInstance.getTypeName();
+import $file.getJavaPackage().$file.getFactory();
+#end
+#end
+
+/**
+ * Automatically generated test case. Calls the greeter client for a number of
+ * bindings and a number of data types.
+ *
+ * @version $Rev: 511417 $ $Date: 2007-02-25 03:06:42 +0000 (Sun, 25 Feb 2007) $
+ */
+public class InteropDatabindingTestCase extends TestCase {
+
+ private static boolean initalised = false;
+ private GreeterService greeterClient;
+ private static SCADomain domain;
+
+ /**
+ * Runs before each test method
+ */
+ protected void setUp() throws Exception {
+ if (!initalised) {
+ domain = SCADomain.newInstance("interopgreeter.composite");
+ super.setUp();
+ initalised = true;
+ }
+ }
+
+ /**
+ * Runs after each test method
+ */
+ protected void tearDown() {
+
+ }
+
+ /**
+ * Finds the SCA component that relates to the protocol being tested. This test
+ * always connects locally to the client component but the client component will
+ * connect to the back end component using the appropriate protocol
+ *
+ * @param ext the protcol required
+ */
+ private void setUpClient(String ext) throws Exception {
+ greeterClient = domain.getService(GreeterService.class, "SDO" + ext + "GreeterServiceClient");
+ }
+
+ /**
+ * Invokes the SDO Greet service using web service bindings with SDO payload
+ */
+ public void testWSGreet() throws Exception {
+ setUpClient("WS");
+ greet();
+ }
+
+ /**
+ * Invokes the SDO Greet service using default bindings with SDO payload
+ */
+ public void testDefaultGreet() throws Exception {
+ setUpClient("Default");
+ greet();
+ }
+
+ /**
+ * A generic method which, regarless of which client is connected, sends out a
+ * series of requrests passing different data types.
+ */
+ public void greet() {
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+ // test $typeInstance.getTypeName()
+ {
+ $typeInstance.getTypeName() param = null;
+ $typeInstance.getCreateTypeCode()
+ $typeInstance.getTypeName() result = greeterClient.greet$typeInstance.getTypeName()(param);
+ $typeInstance.getResultComparison()
+ }
+#end
+#end
+ }
+
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/JAXBGreeter.wsdl.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/JAXBGreeter.wsdl.vm
new file mode 100644
index 0000000000..38bfccce0c
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/JAXBGreeter.wsdl.vm
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+#foreach($file in $fileList)
+
+#end
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+#end
+#end
+
+
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+
+
+#end
+#end
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/SDOGreeter.wsdl.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/SDOGreeter.wsdl.vm
new file mode 100644
index 0000000000..6f02af4c9d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/SDOGreeter.wsdl.vm
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+#foreach($file in $fileList)
+
+#end
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+#end
+#end
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+#end
+#end
+
+
+
+
+#foreach($file in $fileList)
+#set($typeList = $file.getType_())
+#foreach($typeInstance in $typeList)
+
+
+
+
+
+
+
+
+
+#end
+#end
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/generate.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/generate.xml
new file mode 100644
index 0000000000..8453dd56b4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/generate.xml
@@ -0,0 +1,159 @@
+
+
+
+
+
+ InteropDatabindingTestCase.java.vm
+ ../src/test/java/org/apache/tuscany/sca/itest/sdodatabinding
+ org.apache.tuscany.sca.itest.sdodatabinding
+
+
+ interopgreeter.composite.vm
+ classes
+
+
+ SDOGreeter.wsdl.vm
+ classes/wsdl
+
+
+ JAXBGreeter.wsdl.vm
+ classes/wsdl
+
+
+ Person.xsd
+ xsd
+ org.apache.tuscany.sca.itest.databinding.types
+ TypesFactory
+ http://apache.org/tuscany/sca/itest/databinding/types
+ p
+
+ PersonType
+
+ TypesFactory factory = TypesFactory.INSTANCE;
+ param = factory.createPersonType();
+ param.setFirstName("George");
+ param.setLastName("Doors");
+
+
+ param.setGreeting("Hello");
+
+
+ assertNotSame("greetedPerson.getGreeting() not set", "", result.getGreeting());
+
+
+
+
+ Interop.xsd
+ xsd
+ org.apache.tuscany.interop
+ InteropFactory
+ http://www.apache.org/tuscany/interop
+ i
+
+
+ AttributeComplexType
+
+ InteropFactory factory = InteropFactory.INSTANCE;
+ org.apache.tuscany.interop.AttributeType attrib = factory.createAttributeType();
+ attrib.setAttribute("SomeText");
+ param = factory.createAttributeComplexType();
+ param.setAttributeElement(attrib);
+
+
+ param.getAttributeElement().setAttribute("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getAttributeElement().getAttribute());
+
+
+
+ AttributeReferenceComplexType
+
+ InteropFactory factory = InteropFactory.INSTANCE;
+ param = factory.createAttributeReferenceComplexType();
+
+ param.setReferencedAttribute("SomeText");
+
+
+ param.setReferencedAttribute("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getReferencedAttribute());
+
+
+
+ SimpleTypeWithAbstractComplexType
+
+ InteropFactory factory = InteropFactory.INSTANCE;
+ param = factory.createSimpleTypeWithAbstractComplexType();
+ param.setSimpleTypeWithAbstractExtensionElement("SomeText");
+
+
+ param.setSimpleTypeWithAbstractExtensionElement("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithAbstractExtensionElement());
+
+
+
+ SimpleTypeWithNameComplexType
+
+ InteropFactory factory = InteropFactory.INSTANCE;
+ param = factory.createSimpleTypeWithNameComplexType();
+ param.setSimpleTypeWithNameElement("SomeText");
+
+
+ param.setSimpleTypeWithNameElement("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithNameElement());
+
+
+
+ ComplexTypeWithContentType
+
+ InteropFactory factory = InteropFactory.INSTANCE;
+ param = factory.createComplexTypeWithContentType();
+ param.setSimpleTypeWithName("SomeText");
+
+
+ param.setSimpleTypeWithName("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithName());
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/interopgreeter.composite.vm b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/interopgreeter.composite.vm
new file mode 100644
index 0000000000..36797fde57
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/interop/src/main/resources/generate/interopgreeter.composite.vm
@@ -0,0 +1,78 @@
+
+
+
+
+
+ #foreach( $file in $fileList )
+
+ #end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/pom.xml b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/pom.xml
new file mode 100644
index 0000000000..c4e60ddc5b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/pom.xml
@@ -0,0 +1,239 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.5.1
+
+
+ 4.0.0
+
+ itest-databindings-jaxb-bottom-up
+ 1.5.1
+ jar
+ Apache Tuscany SCA iTest Databinding - JAXB Bottom Up
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ http://download.java.net/maven/1
+ legacy
+
+
+ java.net2
+ java.net Maven 2.x Repository
+ http://download.java.net/maven/2
+
+
+
+
+
+ java.net2
+ java.net Maven 2.x Repository
+ http://download.java.net/maven/2
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ ${pom.version}
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-jaxb
+ ${pom.version}
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ itest-databindings-common
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-java-xml
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.5.1
+ runtime
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ compile
+
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1.3
+
+
+
+ commons-collections
+ commons-collections
+ 3.1
+
+
+ log4j
+ log4j
+ 1.2.12
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ -Djava.endorsed.dirs=target/endorsed
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy
+ generate-sources
+
+ copy
+
+
+
+
+ javax.xml.ws
+ jaxws-api
+ 2.1
+ jar
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ jar
+
+
+ ${project.build.directory}/endorsed
+ false
+ true
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AClientService.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AClientService.java
new file mode 100644
index 0000000000..7f9b62f9b4
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AClientService.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 org.apache.tuscany.sca.itest.databindings.jaxb;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The interface for AClientService.
+ */
+@Remotable
+public interface AClientService {
+ public String getGreetingsForward(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AService.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AService.java
new file mode 100644
index 0000000000..1762812c1f
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/AService.java
@@ -0,0 +1,32 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+import javax.jws.soap.SOAPBinding;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The interface for AService.
+ */
+@Remotable
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface AService {
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean1.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean1.java
new file mode 100644
index 0000000000..7529c2b841
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean1.java
@@ -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 org.apache.tuscany.sca.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean1 {
+ private T item;
+
+ public Bean1() {
+ }
+
+ public Bean1(T item) {
+ this.item = item;
+ }
+
+ public void setItem(T item) {
+ this.item = item;
+ }
+
+ public T getItem() {
+ return item;
+ }
+
+ public boolean equals(Object that) {
+ if(that == null) {
+ return false;
+ }
+ if(that.getClass() != this.getClass()) {
+ return false;
+ }
+
+ Bean1> that1 = (Bean1>)that;
+ if(this == that1) {
+ return true;
+ } else if(this.item != null) {
+ return this.item.equals(that1.item);
+ } else {
+ return that1.item == null;
+ }
+ }
+
+ public String toString() {
+ return this.getClass().getSimpleName()+"[item = "+item+"]";
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean10.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean10.java
new file mode 100644
index 0000000000..4a4419a42b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean10.java
@@ -0,0 +1,25 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean10 extends Bean1 {
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean11.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean11.java
new file mode 100644
index 0000000000..65f019ec48
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean11.java
@@ -0,0 +1,25 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean11 extends Bean1 {
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean2.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean2.java
new file mode 100644
index 0000000000..844e28863a
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean2.java
@@ -0,0 +1,56 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean2 {
+ private String name;
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean equals(Object that) {
+ if(that == null) {
+ return false;
+ }
+
+ if(this.getClass() != that.getClass()) {
+ return false;
+ }
+
+ if(this == that) {
+ return true;
+ } else if(this.name != null) {
+ return this.name.equals(((Bean2)that).name);
+ } else {
+ return ((Bean2)that).name == null;
+ }
+ }
+
+ public String toString() {
+ return this.getClass().getSimpleName()+"[name = "+name+"]";
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean3.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean3.java
new file mode 100644
index 0000000000..4e0bd38b2b
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean3.java
@@ -0,0 +1,56 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean3 extends Bean2 {
+ private String address;
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public boolean equals(Object that) {
+ if(that == null) {
+ return false;
+ }
+
+ if(this.getClass() != that.getClass()) {
+ return false;
+ }
+
+ if(this == that) {
+ return true;
+ } else if(this.address != null) {
+ return this.address.equals(((Bean3)that).address) && super.equals(that);
+ } else {
+ return ((Bean3)that).address == null && super.equals(that);
+ }
+ }
+
+ public String toString() {
+ return this.getClass().getSimpleName()+"[name = "+super.getName()+", address = "+address+"]";
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean31.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean31.java
new file mode 100644
index 0000000000..40aff31297
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/Bean31.java
@@ -0,0 +1,56 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Bean31 extends Bean2 {
+ private String address;
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public boolean equals(Object that) {
+ if(that == null) {
+ return false;
+ }
+
+ if(this.getClass() != that.getClass()) {
+ return false;
+ }
+
+ if(this == that) {
+ return true;
+ } else if(this.address != null) {
+ return this.address.equals(((Bean31)that).address) && super.equals(that);
+ } else {
+ return ((Bean31)that).address == null && super.equals(that);
+ }
+ }
+
+ public String toString() {
+ return this.getClass().getSimpleName()+"[name = "+super.getName()+", address = "+address+"]";
+ }
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsLocalService.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsLocalService.java
new file mode 100644
index 0000000000..ca012b967d
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsLocalService.java
@@ -0,0 +1,42 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * The interface for GenericsLocalService.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface GenericsLocalService {
+ Bean1 getTypeExplicit(Bean1 arg);
+
+ Bean1 getTypeUnbound(T[] anArray);
+
+ Bean1 getTypeExtends(T[] anArray);
+
+ > Bean1 getRecursiveTypeBound(T[] anArray);
+
+ Bean1> getWildcardUnbound(Bean1> arg);
+
+ Bean1 super Bean3> getWildcardSuper(Bean1 super Bean3> arg);
+
+ Bean1 extends Bean2> getWildcardExtends(Bean1 extends Bean2> arg);
+
+ Bean2 getPolymorphic(Bean2 arg);
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsService.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsService.java
new file mode 100644
index 0000000000..12ed7d0ec7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsService.java
@@ -0,0 +1,30 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The interface for GenericsService.
+ *
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface GenericsService extends GenericsLocalService{
+}
diff --git a/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsServiceClient.java b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsServiceClient.java
new file mode 100644
index 0000000000..3bae554dc7
--- /dev/null
+++ b/tags/java/sca/1.5.1-RC2/itest/databindings/jaxb-bottom-up/src/main/java/org/apache/tuscany/sca/itest/databindings/jaxb/GenericsServiceClient.java
@@ -0,0 +1,43 @@
+/*
+ * 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.itest.databindings.jaxb;
+
+/**
+ * The interface for GenericsServiceClient.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface GenericsServiceClient {
+ Bean1 getTypeExplicitForward(Bean1 arg);
+
+ Bean1 getTypeUnboundForward(T[] anArray);
+
+ Bean1 getTypeExtendsForward(T[] anArray);
+
+