+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..0bc67c4c98
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/META-INF/sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..8cd23dcc10
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ Apache Tuscany Alert Aggregator Demo
+
+
+ tuscany
+ org.apache.tuscany.sca.host.webapp.TuscanyServletFilter
+
+
+
+ tuscany
+ /*
+
+
+
+ org.apache.tuscany.sca.host.webapp.TuscanyContextListener
+
+
+
+ AlertAggregator.html
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/pop.png b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/pop.png
new file mode 100644
index 0000000000..1cf1df24a7
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/pop.png differ
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/rss.png b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/rss.png
new file mode 100644
index 0000000000..b3c949d224
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/rss.png differ
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/service.smd b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/service.smd
new file mode 100644
index 0000000000..bc77e39bf9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/service.smd
@@ -0,0 +1 @@
+{"SMDVersion":".1","objectName":"AlertsService","serviceType":"JSON-RPC","serviceURL":"http://localhost:8080/sample-feed-aggregator/services/AlertsServiceJSONRPC","methods":[{"name":"getAllNewAlerts","parameters":[{"name":"param0","type":"STRING"}]}]}
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/sources.smd b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/sources.smd
new file mode 100644
index 0000000000..b5f1824363
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/sources.smd
@@ -0,0 +1 @@
+{"SMDVersion":".1","objectName":"AlertsSourcesService","serviceType":"JSON-RPC","serviceURL":"http://localhost:8081/sample-feed-aggregator/services/AlertsSourcesServiceJSONRPC","methods":[{"name":"getAlertSources","parameters":[{"name":"param0","type":"STRING"}]},{"name":"getAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"updateAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"addAlertSource","parameters":[{"name":"param0","type":"STRING"}]},{"name":"removeAlertSource","parameters":[{"name":"param0","type":"STRING"}]}]}
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/style.css b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/style.css
new file mode 100644
index 0000000000..f5bbf23379
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/main/webapp/style.css
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+p,table,li,h1,h2,h3
+{
+font-family: verdana, arial, 'sans serif';
+}
+
+p, h1, h2, h3, table, li, hr
+{
+margin-left: 10pt;
+}
+
+table
+{
+border-color: black;
+border-collapse: separate;
+border-spacing: 0px 1px;
+
+margin-right: 10pt;
+margin-left: 10pt;
+width: 800px;
+}
+
+.sourceDetailsTable
+{
+width: 600px;
+}
+
+tr, td
+{
+margin-left: 0pt;
+margin-right: 0pt;
+padding-left: 10pt;
+font-size: 90%;
+}
+
+p,li,th
+{
+font-size: 90%;
+margin-left: 10pt;
+}
+
+pre
+{
+margin-left: 10pt;
+}
+
+body
+{
+#ffffff;
+}
+
+h1,h2,h3,hr
+{
+color: firebrick;
+}
+
+a:link {COLOR: firebrick;}
+a:visited {COLOR: firebrick;}
+a:active {COLOR: navy;}
+
+.link
+{
+COLOR: firebrick;
+text-decoration: underline;
+}
+
+.clickable
+{
+cursor: pointer
+}
+
+.unread_title
+{
+font-weight: bold;
+}
+
+.read_title
+{
+font-weight: normal;
+}
+
+.summary
+{
+color: DimGrey;
+}
+
+.hidden
+{
+display: none;
+}
+
+.source_name
+{
+width: 600px;
+}
+
+.alert_text
+{
+width: 600px;
+}
+
+.alert_data
+{
+margin-left: 10px;
+width: 800px;
+height: 800px;
+}
+
+.source_0
+{
+background-color: LightGreen;
+}
+
+.source_1
+{
+background-color: LightSkyBlue;
+}
+
+.source_2
+{
+background-color: Khaki;
+}
+
+.source_3
+{
+background-color: LightPink;
+}
+
+.source_4
+{
+background-color: Orange;
+}
+
+.source_5
+{
+background-color: LightCoral;
+}
+
+.source_6
+{
+background-color: Orchid;
+}
+
+.source_7
+{
+background-color: Peru;
+}
+
+.source_8
+{
+background-color: SpringGreen;
+}
+
+.source_9
+{
+background-color: LightGrey;
+}
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/test/java/org/apache/tuscany/sca/demos/aggregator/AlertsTestCase.java b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/test/java/org/apache/tuscany/sca/demos/aggregator/AlertsTestCase.java
new file mode 100644
index 0000000000..9aedd2e1c7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/alert-aggregator-webapp/src/test/java/org/apache/tuscany/sca/demos/aggregator/AlertsTestCase.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.demos.aggregator;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.json.JSONObject;
+
+import com.meterware.httpunit.PostMethodWebRequest;
+import com.meterware.httpunit.WebConversation;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
+
+/**
+ */
+public class AlertsTestCase extends TestCase {
+ private SCADomain scaDomain;
+ /**
+ * Runs before each test method
+ */
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("alerts.composite");
+ super.setUp();
+ }
+
+ /**
+ * Runs after each test method
+ */
+ @Override
+ protected void tearDown() {
+ scaDomain.close();
+ }
+
+/* Use this if you want to test locally without deploying to a web container
+ public void testWait() throws Exception {
+ System.out.println("Feed aggregator server started (press enter to shutdown)");
+ System.in.read();
+ System.out.println("Feed aggregator server stopped");
+ }
+*/
+
+ public void testGetAllNewAlerts() throws Exception {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[\"sometext\"],\"method\":\"getAllNewAlerts\",\"id\":2}");
+ JSONObject jsonResp = callService ("http://localhost:8080/AlertsServiceJSONRPC",
+ jsonRequest);
+ assertNotNull(jsonResp);
+ }
+
+ public void testAddAlertSources() throws Exception {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[{\"name\":\"news\",\"id\":\"2\",\"address\":\"www.news.com\",\"feedAddress\":\"http://news.com.com/2547-1_3-0-20.xml\",\"feedType\":\"rss\",\"lastChecked\":\"lastChecked\",\"javaClass\":\"org.apache.tuscany.sca.demos.aggregator.types.impl.SourceTypeImpl\"}],\"method\":\"addAlertSource\",\"id\":2}");
+ JSONObject jsonResp = callService ("http://localhost:8080/AlertsSourcesServiceJSONRPC",
+ jsonRequest);
+ assertNotNull(jsonResp);
+ }
+
+ public void testGetAlertSources() throws Exception {
+ JSONObject jsonRequest = new JSONObject("{\"params\":[\"sometext\"],\"method\":\"getAlertSources\",\"id\":2}");
+ JSONObject jsonResp = callService ("http://localhost:8080/AlertsSourcesServiceJSONRPC",
+ jsonRequest);
+ assertEquals("BBC News", jsonResp.getJSONObject("result").getJSONObject("source").optJSONArray("list").getJSONObject(0).getString("name"));
+ }
+
+ public JSONObject callService(String url, JSONObject jsonRequest) throws Exception {
+ System.out.println("Request = " + jsonRequest.toString());
+ WebConversation wc = new WebConversation();
+ WebRequest request = new PostMethodWebRequest( url,
+ new ByteArrayInputStream(jsonRequest.toString().getBytes("UTF-8")),"application/json");
+ WebResponse response = wc.getResource(request);
+ System.out.println("Response= " + response.getText());
+ assertEquals(200, response.getResponseCode());
+ return new JSONObject(response.getText());
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/README b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/README
new file mode 100644
index 0000000000..e3e1949da4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/README
@@ -0,0 +1,72 @@
+BigBank Demo
+============
+
+This application is made of 3 modules that represent the different aspects
+of a fictitious banking application. Please see bigbank.png in the bigbank-account directory for a diagram of this demo.
+
+To run the bigbank-account demo you need to first run bigbank-calculator and bigbank-stockquote composites. This will bring up Tuscany runtime and load the two applications and make them available as services. Bigbank-account is dependent on these services.
+
+This demo uses ant. This is just one way of running this demo.
+
+Start Bigbank-calculator composite
+----------------------------------
+
+Bigbank-calculator is a calculator application which handles add, subtract, multiply and divide operations. Each of these operations is implemented in a different language, including JavaScript, groovy, Ruby and Python.
+
+To run the bigbank-calculator composite and make it available as a service for this demo do the following:
+
+cd bigbank-calculator
+ant compile
+ant run
+
+.. Leave the server running
+
+Note that 'ant compile' needs to be done the first time you run this demo out of the binary distribution. No need to do 'ant compile' from there on.
+
+Start Bigbank-stockquote
+------------------------
+
+A very simple web services based stock quote application which returns random
+stock quotes on request. Please note that the stockquote service is not live and is implemented instead to allow for this application to always run without dependency on the availability of a webservice.
+
+cd bigbank-stockquote
+ant compile
+ant run
+
+.. Leave the server running
+
+Note that 'ant compile' needs to be done the first time you run this demo out of the binary distribution. No need to do 'ant compile' from there on.
+
+Start Bigbank-account
+---------------------
+
+Bigbank-account is entry point to this application running on Tuscany. Bigbank-account composite calls into bigbank-stockquote and bigbank-calculator services. Start bigbank-account in the following way:
+
+cd bigbank-account
+ant compile
+ant run
+
+.. Leave the server running
+
+Note that 'ant compile' needs to be done the first time you run this demo out ofthe binary distribution. No need to do 'ant compile' from there on.
+
+Run the demo
+-------------
+The front end of this demo application is a web app which users Json/RPC to communicate with the backend for retrieving account information.
+
+To try the app out point you browser at:
+
+http://localhost:8080/AccountJSON.html
+
+This should display an interface with a single button that goes and retrieves
+a single set of account details exercising services across the three running
+SCA applications.
+
+If you press on getAccountReport, you'll see a response posted, but the detail of the data will be displayed in the screen where you started bigbank-account.
+
+
+Stop the demo
+-------------
+Go to each of the corresponding command line screens and hit 'enter'. This will stop each of the applications.
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.png b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.png
new file mode 100644
index 0000000000..985cc6bd05
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.png differ
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.svg b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.svg
new file mode 100644
index 0000000000..6698b8cc9b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/bigbank.svg
@@ -0,0 +1,519 @@
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build-dojo.xml b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build-dojo.xml
new file mode 100644
index 0000000000..88aa0bd973
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build-dojo.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build.xml b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build.xml
new file mode 100644
index 0000000000..f05d525865
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/build.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/pom.xml b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/pom.xml
new file mode 100644
index 0000000000..f3597c180a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/pom.xml
@@ -0,0 +1,175 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-demos
+ 1.0.1-incubating
+ ../pom.xml
+
+ demo-bigbank-account
+ jar
+ Apache Tuscany SCA BigBank Account Demo
+
+
+
+ apache.incubator
+ http://people.apache.org/repo/m2-incubating-repository
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-feed
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-jsonrpc
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-rmi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-resource
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-http
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
+
+ demo-bigbank-account
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ install-dojo
+ validate
+
+ run
+
+
+
+
+
+
+
+
+
+
+ copy-dojo-files
+ generate-resources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+ clean-dojo-files
+ clean
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountService.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountService.java
new file mode 100644
index 0000000000..2cb8027874
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountService.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 bigbank.account;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+@Remotable
+public interface AccountService {
+
+ public double getAccountReport(String customerID);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountServiceImpl.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountServiceImpl.java
new file mode 100644
index 0000000000..4f1afee204
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/AccountServiceImpl.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 bigbank.account;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import stockquote.StockQuoteService;
+import bigbank.accountdata.AccountDataService;
+import bigbank.accountdata.CheckingAccount;
+import bigbank.accountdata.SavingsAccount;
+import bigbank.accountdata.StockAccount;
+import calculator.CalculatorService;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+@Service(AccountService.class)
+public class AccountServiceImpl implements AccountService {
+
+ @Reference
+ protected AccountDataService accountDataService;
+
+ @Reference
+ protected StockQuoteService stockQuoteService;
+
+ @Reference
+ protected CalculatorService calculatorService;
+
+ @Property
+ protected String currency;
+
+ public double getAccountReport(String customerID) {
+
+ // Get the checking, savings and stock accounts from the AccountData
+ // service component
+ CheckingAccount checking = accountDataService.getCheckingAccount(customerID);
+ System.out.println("Checking account: " + checking);
+
+ SavingsAccount savings = accountDataService.getSavingsAccount(customerID);
+ System.out.println("Savings account: " + savings);
+
+ StockAccount stock = accountDataService.getStockAccount(customerID);
+ System.out.println("Stock account: " + stock);
+
+ // Get the stock price in USD
+ double price = stockQuoteService.getQuote(stock.getSymbol());
+ System.out.println("Stock price for " + stock.getSymbol() + ": " + price);
+
+ // Convert to the configured currency
+ if (currency.equals("EURO")) {
+
+ // Use our fancy calculator service to convert to the target currency
+ price = calculatorService.multiply(price, 0.70);
+
+ System.out.println("Converted to " + currency + ": " + price);
+ }
+
+ // Calculate the value of the stock account
+ double stockValue = price * stock.getQuantity();
+
+ // Calculate the total balance of all accounts and return it
+ double balance = checking.getBalance() + savings.getBalance() + stockValue;
+
+ return balance;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java
new file mode 100644
index 0000000000..c17e9ada20
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.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 bigbank.account.feed;
+
+import java.util.Collections;
+
+import org.apache.tuscany.sca.binding.feed.collection.Collection;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import bigbank.account.AccountService;
+
+import com.sun.syndication.feed.atom.Content;
+import com.sun.syndication.feed.atom.Entry;
+import com.sun.syndication.feed.atom.Feed;
+import com.sun.syndication.feed.atom.Link;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+@Service(Collection.class)
+public class AccountFeedImpl implements Collection {
+
+ @Reference
+ protected AccountService accountService;
+
+ @SuppressWarnings("unchecked")
+ public com.sun.syndication.feed.atom.Feed getFeed() {
+
+ // Create a new Feed
+ Feed feed = new Feed();
+ feed.setId("accounts");
+ feed.setTitle("Account Report Feed");
+ Content subtitle = new Content();
+ subtitle.setValue("This is a sample feed");
+ feed.setSubtitle(subtitle);
+ Link link = new Link();
+ link.setHref("http://incubator.apache.org/tuscany");
+ feed.getAlternateLinks().add(link);
+
+ // Add the Account report entry
+ Entry entry = get("1234");
+ feed.getEntries().add(entry);
+
+ return feed;
+ }
+
+ public void delete(String id) {
+ }
+
+ public Entry get(String id) {
+
+ // Get the account report for the specified customer ID
+ double balance = accountService.getAccountReport(id);
+ String value = Double.toString(balance);
+
+ Entry entry = new Entry();
+ entry.setId("account-" + id);
+ entry.setTitle("Account Report Entry");
+ Content summary = new Content();
+ summary.setType(Content.HTML);
+ summary.setValue("This is your account report: " + value + "");
+ entry.setSummary(summary);
+ Content content = new Content();
+ content.setValue(value);
+ entry.setContents(Collections.singletonList(content));
+ return entry;
+ }
+
+ public Entry post(Entry entry) {
+ return null;
+ }
+
+ public Entry put(String id, Entry entry) {
+ return null;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataService.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataService.java
new file mode 100644
index 0000000000..02f4d0e7b6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataService.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 bigbank.accountdata;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+public interface AccountDataService {
+
+ public CheckingAccount getCheckingAccount(String customerID);
+
+ public SavingsAccount getSavingsAccount(String customerID);
+
+ public StockAccount getStockAccount(String customerID);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataServiceImpl.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataServiceImpl.java
new file mode 100644
index 0000000000..2e1290aa5f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/AccountDataServiceImpl.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 bigbank.accountdata;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+@Service(AccountDataService.class)
+public class AccountDataServiceImpl implements AccountDataService {
+
+ public CheckingAccount getCheckingAccount(String customerID) {
+
+ CheckingAccount checkingAccount = new CheckingAccount();
+ checkingAccount.setAccountNumber("CHA_" + customerID);
+ checkingAccount.setBalance(500.0f);
+
+ return checkingAccount;
+ }
+
+ public SavingsAccount getSavingsAccount(String customerID) {
+
+ SavingsAccount savingsAccount = new SavingsAccount();
+ savingsAccount.setAccountNumber("SAA_" + customerID);
+ savingsAccount.setBalance(1500.0f);
+
+ return savingsAccount;
+ }
+
+ public StockAccount getStockAccount(String customerID) {
+
+ StockAccount stockAccount = new StockAccount();
+ stockAccount.setAccountNumber("STA_" + customerID);
+ stockAccount.setSymbol("IBM");
+ stockAccount.setQuantity(100);
+
+ return stockAccount;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/CheckingAccount.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/CheckingAccount.java
new file mode 100644
index 0000000000..c53d8b4576
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/CheckingAccount.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 bigbank.accountdata;
+
+/**
+ * @version $$Rev$$ $$Date: 2007-04-09 12:03:34 -0700 (Mon, 09 Apr
+ * 2007) $$
+ */
+
+public class CheckingAccount {
+ private String accountNumber;
+ private double balance;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String n) {
+ this.accountNumber = n;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+ public void setBalance(double b) {
+ this.balance = b;
+ }
+
+ @Override
+ public String toString() {
+ return accountNumber + ", balance:" + balance;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/SavingsAccount.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/SavingsAccount.java
new file mode 100644
index 0000000000..f4c7442f30
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/SavingsAccount.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 bigbank.accountdata;
+
+/**
+ * @version $$Rev$$ $$Date: 2007-04-09 12:03:34 -0700 (Mon, 09 Apr
+ * 2007) $$
+ */
+
+public class SavingsAccount {
+ private String accountNumber;
+ private double balance;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String n) {
+ this.accountNumber = n;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+ public void setBalance(double b) {
+ this.balance = b;
+ }
+
+ @Override
+ public String toString() {
+ return accountNumber + ", balance:" + balance;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/StockAccount.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/StockAccount.java
new file mode 100644
index 0000000000..c28e0b59a7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/accountdata/StockAccount.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 bigbank.accountdata;
+
+/**
+ * @version $$Rev$$ $$Date: 2007-04-09 12:03:34 -0700 (Mon, 09 Apr
+ * 2007) $$
+ */
+
+public class StockAccount {
+ private String accountNumber;
+ private String symbol;
+ private int quantity;
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public void setAccountNumber(String n) {
+ this.accountNumber = n;
+ }
+
+ public double getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(int a) {
+ this.quantity = a;
+ }
+
+ public String getSymbol() {
+ return symbol;
+ }
+
+ public void setSymbol(String s) {
+ this.symbol = s;
+ }
+
+ @Override
+ public String toString() {
+ return accountNumber + ", symbol:" + symbol + ", quantity:" + quantity;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/client/BigBankClient.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/client/BigBankClient.java
new file mode 100644
index 0000000000..a7fa5ecc22
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/client/BigBankClient.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 bigbank.client;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import bigbank.account.AccountService;
+
+/**
+ * This client program shows how to create an SCA runtime, start it,
+ * and locate and invoke a SCA component
+ */
+public class BigBankClient {
+
+ public static void main(String[] args) throws Exception {
+
+ SCADomain domain = SCADomain.newInstance("BigBank.composite");
+
+ AccountService accountService = domain.getService(AccountService.class, "AccountServiceComponent");
+
+ String customerID = "1234";
+
+ System.out.println("Calling account service for customer: " + customerID);
+ System.out.println();
+ double balance = accountService.getAccountReport(customerID);
+
+ System.out.println();
+ System.out.println("Balance: " + balance);
+
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/demo/BigBankServer.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/demo/BigBankServer.java
new file mode 100644
index 0000000000..89b6aeadc4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/bigbank/demo/BigBankServer.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 bigbank.demo;
+
+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 BigBankServer {
+
+ public static void main(String[] args) throws Exception {
+ long timeout = -1L;
+ if (args.length > 0) {
+ timeout = Long.parseLong(args[0]);
+ }
+ System.out.println("Starting the Sample SCA BigBank server...");
+
+ SCADomain domain = SCADomain.newInstance("BigBank.composite");
+
+ if (timeout < 0) {
+ System.out.println("Press Enter to Exit...");
+ System.in.read();
+ } else {
+ Thread.sleep(timeout);
+ }
+
+ domain.close();
+
+ System.out.println("Bye");
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/calculator/CalculatorService.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..c89043276e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/calculator/CalculatorService.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 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.0.1-RC4/demos/bigbank-account/src/main/java/stockquote/StockQuoteService.java b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/stockquote/StockQuoteService.java
new file mode 100644
index 0000000000..749b8ee2f4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/java/stockquote/StockQuoteService.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 stockquote;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the StockQuote service.
+ */
+@Remotable
+public interface StockQuoteService {
+ public double getQuote(String symbol);
+}
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/AccountData.composite b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/AccountData.composite
new file mode 100644
index 0000000000..c254ca95a8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/AccountData.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/BigBank.composite b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/BigBank.composite
new file mode 100644
index 0000000000..9caaf43787
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/BigBank.composite
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EURO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/web/AccountJSON.html b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/web/AccountJSON.html
new file mode 100644
index 0000000000..1609bf4b43
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/demos/bigbank-account/src/main/resources/web/AccountJSON.html
@@ -0,0 +1,92 @@
+
+
+
+Tuscany JSON-RPC BigBank Client
+
+
+
+
+
+
+
+
+
+
+
+
+
");
+ int port = request.getServerPort();
+ String portSubStr = ((port == -1) ? "" : (":" + request.getServerPort()));
+ String backPath = request.getScheme() + "://" + request.getServerName() + portSubStr + request.getContextPath();
+ out.println("Go back");
+ out.println("");
+ out.println("");
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/java/org/apache/tuscany/sca/webapp/WarContextListener.java b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/java/org/apache/tuscany/sca/webapp/WarContextListener.java
new file mode 100644
index 0000000000..b2e44c2068
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/java/org/apache/tuscany/sca/webapp/WarContextListener.java
@@ -0,0 +1,304 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.webapp;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+import org.apache.tuscany.sca.core.assembly.ActivationException;
+import org.apache.tuscany.sca.domain.SCADomain;
+import org.apache.tuscany.sca.node.NodeException;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.apache.tuscany.sca.node.impl.SCANodeImpl;
+
+/**
+ * A ServletContextListener for the Tuscany WAR distribution.
+ *
+ * Starts and stops a Tuscany SCA domain Node for the webapp.
+ *
+ * TODO: Use Node instead of NodeImpl?
+ */
+public class WarContextListener implements ServletContextListener {
+ private final static Logger logger = Logger.getLogger(WarContextListener.class.getName());
+
+ protected SCANode node;
+ protected SCADomain domain;
+ protected AddableURLClassLoader classLoader;
+ protected File repository;
+
+ protected boolean useHotUpdate;
+ protected long hotDeployInterval = 2000; // 2 seconds, 0 = no hot deploy
+ protected Thread hotDeployThread;
+ protected boolean stopHotDeployThread;
+
+ protected HashMap existingContributions; // value is last modified time
+
+ private String domainName;
+ private String nodeName;
+
+ protected static final String NODE_ATTRIBUTE = WarContextListener.class.getName() + ".TuscanyNode";
+ protected static final String REPOSITORY_FOLDER_NAME = "sca-contributions";
+
+ public void contextInitialized(ServletContextEvent event) {
+ ServletContext servletContext = event.getServletContext();
+ initParameters(servletContext);
+ try {
+
+ initNode();
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ servletContext.log("exception initializing SCA node", e);
+ }
+ }
+
+ public void contextDestroyed(ServletContextEvent event) {
+ if (node != null) {
+ stopNode();
+ }
+ }
+
+ protected void stopNode() {
+ try {
+
+ node.stop();
+ logger.log(Level.INFO, "SCA node stopped");
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ logger.log(Level.SEVERE, "exception stopping SCA Node", e);
+ }
+ }
+
+ protected void initNode() throws ContributionException, ActivationException, IOException,
+ CompositeBuilderException, URISyntaxException {
+ try {
+ logger.log(Level.INFO, "SCA node starting");
+
+ classLoader = new AddableURLClassLoader(new URL[] {}, Thread.currentThread().getContextClassLoader());
+ Thread.currentThread().setContextClassLoader(classLoader);
+
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+ node = nodeFactory.createSCANode(nodeName, domainName);
+ domain = node.getDomain();
+
+
+ existingContributions = new HashMap();
+ URL[] contributions = getContributionJarURLs(repository);
+ for (URL contribution : contributions) {
+ addContribution(contribution);
+ }
+
+ node.start();
+
+ initHotDeploy(repository);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ logger.log(Level.WARNING, "Exception adding contribution: " + e);
+ }
+ }
+
+ protected void addContribution(URL contribution) throws URISyntaxException, NodeException {
+ classLoader.addURL(contribution);
+ node.addContribution(contribution.toString(), contribution);
+ existingContributions.put(contribution, new Long(new File(contribution.toURI()).lastModified()));
+ logger.log(Level.INFO, "Added contribution: " + contribution);
+ }
+
+ protected URL[] getContributionJarURLs(File repositoryDir) {
+
+ String[] jarNames = repositoryDir.list(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.endsWith(".jar");
+ }});
+
+ List contributionJars = new ArrayList();
+ if (jarNames != null) {
+ for (String jar : jarNames) {
+ try {
+ contributionJars.add(new File(repositoryDir, jar).toURL());
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ return contributionJars.toArray(new URL[contributionJars.size()]);
+ }
+
+ private void initHotDeploy(final File repository) {
+
+ if (hotDeployInterval == 0) {
+ return; // hotUpdateInterval of 0 disables hotupdate
+ }
+
+ Runnable runable = new Runnable() {
+
+ public void run() {
+ logger.info("Contribution hot deploy activated");
+ while (!stopHotDeployThread) {
+ try {
+ Thread.sleep(hotDeployInterval);
+ } catch (InterruptedException e) {
+ }
+ if (!stopHotDeployThread) {
+ checkForUpdates(repository);
+ }
+ }
+ logger.info("Tuscany contribution hot deploy stopped");
+ }
+ };
+ hotDeployThread = new Thread(runable, "TuscanyHotDeploy");
+ stopHotDeployThread = false;
+ hotDeployThread.start();
+ }
+
+ protected void checkForUpdates(File repository) {
+ URL[] currentContributions = getContributionJarURLs(repository);
+
+ List addedContributions = getAddedContributions(currentContributions);
+ for (URL contribution : addedContributions) {
+ try {
+ addContribution(contribution);
+ } catch (Throwable e) {
+ e.printStackTrace();
+ logger.log(Level.WARNING, "Exception adding contribution: " + e);
+ }
+ }
+
+ if (useHotUpdate && areContributionsAltered(currentContributions)) {
+ stopNode();
+ try {
+ initNode();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ logger.log(Level.SEVERE, "exception starting SCA Node", e);
+ }
+ }
+ }
+
+ protected List getAddedContributions(URL[] currentContrabutions) {
+ List urls = new ArrayList();
+ for (URL url : currentContrabutions) {
+ if (!existingContributions.containsKey(url)) {
+ urls.add(url);
+ }
+ }
+ return urls;
+ }
+
+ protected boolean areContributionsAltered(URL[] currentContrabutions) {
+ try {
+
+ List removedContributions = getRemovedContributions(currentContrabutions);
+ List updatedContributions = getUpdatedContributions(currentContrabutions);
+
+ return (removedContributions.size() > 0 || updatedContributions.size() > 0);
+
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected List getUpdatedContributions(URL[] currentContrabutions) throws URISyntaxException {
+ List urls = new ArrayList();
+ for (URL url : currentContrabutions) {
+ if (existingContributions.containsKey(url)) {
+ File curentFile = new File(url.toURI());
+ if (curentFile.lastModified() != existingContributions.get(url)) {
+ urls.add(url);
+ logger.info("updated contribution: " + curentFile.getName());
+ }
+ }
+ }
+ return urls;
+ }
+
+ protected List getRemovedContributions(URL[] currentContrabutions) throws URISyntaxException {
+ List currentUrls = Arrays.asList(currentContrabutions);
+ List urls = new ArrayList();
+ for (URL url : existingContributions.keySet()) {
+ if (!currentUrls.contains(url)) {
+ urls.add(url);
+ }
+ }
+ for (URL url : urls) {
+ logger.info("removed contributions: " + new File(url.toURI()).getName());
+ }
+ return urls;
+ }
+
+ protected void initParameters(ServletContext servletContext) {
+ if (servletContext.getInitParameter("domainName") != null) {
+ domainName = servletContext.getInitParameter("domainName");
+ } else {
+ domainName = null;
+ }
+
+ if (servletContext.getInitParameter("nodeName") != null) {
+ nodeName = servletContext.getInitParameter("nodeName");
+ } else {
+ nodeName = "DefaultNode";
+ }
+
+ if (servletContext.getInitParameter("hotDeployInterval") != null) {
+ hotDeployInterval = Long.parseLong(servletContext.getInitParameter("hotDeployInterval"));
+ }
+
+ useHotUpdate = Boolean.valueOf(servletContext.getInitParameter("hotUpdate")).booleanValue();
+
+ repository = new File(servletContext.getRealPath(REPOSITORY_FOLDER_NAME));
+ }
+
+}
+
+class AddableURLClassLoader extends URLClassLoader {
+
+ public AddableURLClassLoader(URL[] urls, ClassLoader parent) {
+ super(urls, parent);
+ }
+
+ /**
+ * Make URLClassLoader addURL public
+ */
+ @Override
+ public void addURL(URL url) {
+ super.addURL(url);
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/WEB-INF/web.xml b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..cad30640da
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+ Apache Tuscany WebApp Runtime
+
+
+ org.apache.tuscany.sca.webapp.WarContextListener
+
+
+
+ domainName
+ http://localhost:8877/
+
+
+ nodeName
+ http://localhost:8080/
+
+
+ hotDeployInterval
+ 2000
+
+
+ hotUpdate
+ no
+
+
+
+ tuscany
+ org.apache.tuscany.sca.host.webapp.TuscanyServletFilter
+
+
+
+ tuscany
+ /*
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/safeToDelete.tmp b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/safeToDelete.tmp
new file mode 100644
index 0000000000..4efe4b5db3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/safeToDelete.tmp
@@ -0,0 +1 @@
+File just to get the sca-contributions folder included in webapp
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-calculator-nodeB.jar b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-calculator-nodeB.jar
new file mode 100644
index 0000000000..0df7ab8d74
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-calculator-nodeB.jar differ
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-helloworld-ws-service.jar b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-helloworld-ws-service.jar
new file mode 100644
index 0000000000..acf47451b3
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/sca-contributions/sample-helloworld-ws-service.jar differ
diff --git a/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/scaDomainInfo.jsp b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/scaDomainInfo.jsp
new file mode 100644
index 0000000000..5a85060d4c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/distribution/webapp/src/main/webapp/scaDomainInfo.jsp
@@ -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.
+--%>
+
+<%@ page import="org.apache.tuscany.sca.host.embedded.SCADomain"%>
+<%@ page import="org.apache.tuscany.sca.host.embedded.management.ComponentManager"%>
+<%@ page import="org.apache.tuscany.sca.assembly.ComponentService"%>
+<%@ page import="org.apache.tuscany.sca.assembly.Binding"%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%
+ SCADomain scaDomain = (SCADomain) application.getAttribute("org.apache.tuscany.sca.SCADomain");
+ ComponentManager componentManager = scaDomain.getComponentManager();
+%>
+
+Apache Tuscany WebApp Runtime
+
+
+Apache Tuscany WebApp Runtime
+
+Components in SCA Domain:
+ <%
+ java.util.Iterator i = componentManager.getComponentNames().iterator();
+ while (i.hasNext()) {
+ String compName = i.next().toString();
+
+ %> <%=compName%> <%
+
+ org.apache.tuscany.sca.assembly.Component comp = componentManager.getComponent(compName);
+ java.util.Iterator j = comp.getServices().iterator();
+ while (j.hasNext()) {
+ ComponentService compService = (ComponentService)j.next();
+
+ %><%=" - Service: " + compService.getName()%> <%
+
+ java.util.Iterator k = compService.getBindings().iterator();
+ while (k.hasNext()) {
+ Binding b = (Binding)k.next();
+ String bindingType = b.getClass().getName();
+
+ %><%="-- Binding: " + b.getName() + "(" + bindingType.substring(bindingType.lastIndexOf('.')+1) + ") URI: " + b.getURI()%> <%
+ }
+ }
+ }
+ %>
+
+
+
+You can fill in a composite file to upload
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/pom.xml b/tags/java/sca/1.0.1-RC4/itest/admin/pom.xml
new file mode 100644
index 0000000000..1380429328
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/pom.xml
@@ -0,0 +1,60 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ tuscany-itest-admin
+ Apache Tuscany Admin Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-core-databinding
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ compile
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/readme.txt b/tags/java/sca/1.0.1-RC4/itest/admin/readme.txt
new file mode 100644
index 0000000000..c4e96d7af0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/readme.txt
@@ -0,0 +1,28 @@
+This is a simple test compiled to test simple features of SCA
+
+There are interfaces to different services that have been included
+
+1. MyListService
+2. MyListServiceByYear
+3. MyService
+4. MyServiceByDate
+5. MyTotalservice
+
+The service that has been used in the tests primarily is MyService/MyTotalService.
+in the test cases.
+
+There are three test cases and three composites (MySimppleService,Iteration1,Iteration3).
+
+1. MySimpleServiceTestCase - Checks if the components in MySimpleService.composite are initialized properly.
+ It tries to call simple functions implemented in MySimpleServiceImpl.
+
+2. MyTotalServiceTestCase - Initializes the components in the Iteration3Composite.composite file.
+ tries to call simple functions implemented in MyTotalServiceImpl.
+
+3. MySimpleServiceInRecursiveTestCase - Initializes the components in the Iteration1Composite.composite file.
+ It initializes its components using implementation:composite tag in the
+ composite file which points to MySimpleService.composite.
+ The test case recursively calls functions initialized in MySimpleService.composite.
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListService.java b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListService.java
new file mode 100644
index 0000000000..af9234b9bc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListService.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.itest.admin;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface MyListService {
+ String[] getHolidays();
+ String getYear();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceByYear.java b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceByYear.java
new file mode 100644
index 0000000000..4197007519
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceByYear.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.itest.admin;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface MyListServiceByYear {
+ String[] getHolidays(int year);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceImpl.java
new file mode 100644
index 0000000000..21b38e734a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/src/main/java/org/apache/tuscany/sca/itest/admin/MyListServiceImpl.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.admin;
+
+
+import java.util.List;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import org.apache.tuscany.sca.itest.admin.MyListService;
+import org.apache.tuscany.sca.itest.admin.MyListServiceByYear;
+
+@Service(interfaces={MyListService.class,MyListServiceByYear.class})
+
+public class MyListServiceImpl implements MyListService,MyListServiceByYear
+{
+
+ // This is multiplicity=1:n
+ @Reference(name="myListServiceList",required=true)
+ public List myListServicesList;
+
+ // This is multiplicity=0:n
+ @Reference(name="myListServiceArray",required=false)
+ public MyListService[] myListServicesArray;
+
+ @Property(name="serviceYear")
+ protected String year = "2006";
+
+ public String[] getHolidays()
+ {
+ return getHolidays(new Integer(year).intValue());
+ }
+
+ public String[] getHolidays(int year)
+ {
+ MyListService myService;
+ if (myListServicesList!=null)
+ {
+ for (int i=0; i=0 && index
+
+
+
+ Raleigh
+ 2008
+
+ Durham
+ 2009
+
+
+
+
+
+
+
+ Durham
+ 2009
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/Iteration3Composite.composite b/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/Iteration3Composite.composite
new file mode 100644
index 0000000000..dd06d030d6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/Iteration3Composite.composite
@@ -0,0 +1,68 @@
+
+
+
+
+ Raleigh
+ 2008
+
+
+
+
+
+
+
+ CARY
+ 2007
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Durham
+ 2009
+
+
+
+
+
+
+
+ Durham
+ 2009
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/MySimpleService.composite b/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/MySimpleService.composite
new file mode 100644
index 0000000000..a1f8abb8da
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/admin/src/test/resources/MySimpleService.composite
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Raleigh
+ 2008
+
+
+
+
+
+
+
+ CARY
+ 2007
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callablereferences/pom.xml
new file mode 100644
index 0000000000..757c339745
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/pom.xml
@@ -0,0 +1,81 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callablereferences
+ Apache Tuscany SCA Callable References Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-node-impl
+ 1.0.1-incubating
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-domain-impl
+ 1.0.1-incubating
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ test
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-sca-axis2
+ 1.0.1-incubating
+ test
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponent.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponent.java
new file mode 100644
index 0000000000..fa63d975a6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponent.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.callableref;
+
+public interface AComponent {
+ String foo();
+
+ String fooB();
+ String fooB1();
+
+ String fooC();
+ String fooC1();
+
+ String fooD();
+
+ String fooBC();
+
+ DComponent getDReference();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponentImpl.java
new file mode 100644
index 0000000000..af3e624dc7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/AComponentImpl.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Service;
+
+@Service(AComponent.class)
+public class AComponentImpl implements AComponent {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference(name = "bReference")
+ protected BComponent b;
+
+ @Reference
+ protected CComponent cReference;
+
+ @Reference
+ protected ServiceReference cServiceReference;
+
+ @Reference(required=false)
+ protected DComponent dReference;
+
+ protected DComponent dReference1;
+
+ @Reference(name = "dReference1")
+ public void setDReference(DComponent dReference) {
+ this.dReference1 = dReference;
+ }
+
+ public String foo() {
+ return "AComponent";
+ }
+
+ public String fooB() {
+ return b.foo();
+ }
+
+ public String fooB1() {
+ CallableReference bRef = componentContext.cast(b);
+ return bRef.getService().foo();
+ }
+
+ public String fooC() {
+ return cReference.foo();
+ }
+
+ public String fooC1() {
+ return cServiceReference.getService().foo();
+ }
+
+ public String fooBC() {
+ CallableReference cReference = componentContext.getServiceReference(CComponent.class, "cReference");
+ return b.fooC(cReference);
+ }
+
+ public String fooD() {
+ CallableReference aReference = componentContext.createSelfReference(AComponent.class);
+ return dReference1.foo(aReference);
+ }
+
+ public DComponent getDReference() {
+ return dReference;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponent.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponent.java
new file mode 100644
index 0000000000..ade672b0ab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponent.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.callableref;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface BComponent {
+
+ String foo();
+
+ String fooC(CallableReference cComponent);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponentImpl.java
new file mode 100644
index 0000000000..518e77d3a8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/BComponentImpl.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.callableref;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Service;
+
+@Service(BComponent.class)
+public class BComponentImpl implements BComponent {
+
+ public BComponentImpl() {
+ }
+
+ public String foo() {
+ return "BComponent";
+ }
+
+ public String fooC(CallableReference cReference) {
+ return "B" + cReference.getService().foo();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponent.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponent.java
new file mode 100644
index 0000000000..fdf80cc1c8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponent.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.itest.callableref;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface CComponent {
+
+ String foo();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponentImpl.java
new file mode 100644
index 0000000000..cc8ec8f000
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/CComponentImpl.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.callableref;
+
+import org.osoa.sca.annotations.Service;
+
+@Service(CComponent.class)
+public class CComponentImpl implements CComponent {
+
+ public String foo() {
+ return "CComponent";
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponent.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponent.java
new file mode 100644
index 0000000000..3b25d351ae
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponent.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.itest.callableref;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface DComponent {
+
+ String foo(CallableReference aReference);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponentImpl.java
new file mode 100644
index 0000000000..1ab1973476
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/java/org/apache/tuscany/sca/itest/callableref/DComponentImpl.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.itest.callableref;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Service;
+
+@Service(DComponent.class)
+public class DComponentImpl implements DComponent {
+
+ @Context
+ protected RequestContext requestContext;
+
+ public String foo(CallableReference aReference) {
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(aReference);
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
+ Object obj = ois.readObject();
+ aReference = (CallableReference) obj;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("Invoking service: " + requestContext.getServiceName());
+ return "D" + aReference.getService().foo();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/CallableReferenceTest.composite b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/CallableReferenceTest.composite
new file mode 100644
index 0000000000..49b75f56e4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/CallableReferenceTest.composite
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite
new file mode 100644
index 0000000000..eb456b99f2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeA/CompositeA.composite
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeA/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite
new file mode 100644
index 0000000000..2849400be4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeB/CompositeB.composite
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/main/resources/nodeB/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
new file mode 100644
index 0000000000..bf6bf2ba50
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.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 org.apache.tuscany.sca.itest.callableref;
+
+
+import static junit.framework.Assert.assertEquals;
+
+import javax.xml.namespace.QName;
+
+
+import junit.framework.Assert;
+
+
+import org.apache.tuscany.sca.domain.SCADomain;
+import org.apache.tuscany.sca.domain.SCADomainFactory;
+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 String DEFAULT_DOMAIN_URI = "http://localhost:8877";
+
+ private static SCADomain domain;
+ 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 domain");
+ SCADomainFactory domainFactory = SCADomainFactory.newInstance();
+ domain= domainFactory.createSCADomain(DEFAULT_DOMAIN_URI);
+
+ System.out.println("Setting up nodes");
+
+ ClassLoader cl = CallableReferenceRemoteTestCase.class.getClassLoader();
+
+ SCANodeFactory nodeFactory = SCANodeFactory.newInstance();
+
+ nodeA = nodeFactory.createSCANode("nodeA", DEFAULT_DOMAIN_URI);
+ nodeA.addContribution("nodeA", cl.getResource("nodeA/"));
+ nodeA.start();
+
+ nodeB = nodeFactory.createSCANode("nodeB", DEFAULT_DOMAIN_URI);
+ nodeB.addContribution("nodeB", cl.getResource("nodeB/"));
+ nodeB.start();
+
+ // get a reference to the calculator service from domainA
+ // which will be running this component
+ acomponent = nodeA.getDomain().getService(AComponent.class, "AComponent/AComponent");
+ } catch (Exception ex) {
+ System.out.println(ex.toString());
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ // stop the nodes and hence the domains they contain
+ nodeA.stop();
+ nodeB.stop();
+ }
+
+ @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());
+ }
+
+ /* Commented it out as it's still failing
+ @Test
+ public void testDReference() {
+ assertEquals("DAComponent", acomponent.fooD());
+ }
+ */
+
+ //@Test
+ public void testBCReference() {
+ assertEquals("BCComponent", acomponent.fooBC());
+ }
+
+ @Test
+ public void testRequiredFalseReference() {
+ try {
+ acomponent.getDReference().foo(null);
+ } catch (Exception e) {
+ Assert.assertTrue(true);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceTestCase.java b/tags/java/sca/1.0.1-RC4/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceTestCase.java
new file mode 100644
index 0000000000..2b7750b443
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.getDReference().foo(null);
+ } catch (Exception e) {
+ Assert.assertTrue(true);
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-api/pom.xml
new file mode 100644
index 0000000000..86dd215475
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-api
+ Apache Tuscany SCA Callback API Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.java
new file mode 100644
index 0000000000..e03bc1bda8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiCallBack.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 CallBackApiCallBack {
+
+ public void callBackMessage(String aString);
+
+ public void callBackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.java
new file mode 100644
index 0000000000..3e7c840e15
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClient.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 CallBackApiClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java
new file mode 100644
index 0000000000..521464b4a2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiClientImpl.java
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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();
+
+ 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;
+ }
+
+ private void test3a() {
+ aCallBackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we cant 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());
+
+ }
+
+ private void test3a1() {
+ aCallBackService.knockKnockByRef("Knock Knock");
+ int count = 0;
+
+ //
+ // If we cant 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());
+
+ }
+
+ private void test3b() {
+ aCallBackService.noCallBack("No Reply Desired");
+ Assert.assertEquals("CallBackApiITest - test3b", 1, 1);
+ return;
+ }
+
+ private void test3c() {
+ aCallBackService.multiCallBack("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we cant 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;
+ }
+
+ 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.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.java
new file mode 100644
index 0000000000..4e15e97c8d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiService.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(CallBackApiCallBack.class)
+/**
+ *
+ */
+public interface CallBackApiService {
+
+ public void knockKnock(String aString);
+ public void knockKnockByRef(String aString);
+ public void noCallBack(String aString);
+
+ public void multiCallBack(String aString);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.java
new file mode 100644
index 0000000000..d51904d2ea
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/java/org/apache/tuscany/sca/test/CallBackApiServiceImpl.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;
+
+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;
+
+ private CallBackApiCallBack callback;
+
+ @Callback
+ protected CallableReference callbackRef;
+
+ 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;
+
+ }
+
+ 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;
+
+ }
+
+ 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;
+
+ }
+
+ public void noCallBack(String aString) {
+
+ System.out.println("CallBackApiServiceImpl message received: " + aString);
+
+ return;
+
+ }
+
+ 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.0.1-RC4/itest/callback-api/src/main/resources/CallBackApiTest.composite b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/resources/CallBackApiTest.composite
new file mode 100644
index 0000000000..946c4862ee
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/main/resources/CallBackApiTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.java b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.java
new file mode 100644
index 0000000000..6d6ca66ab8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-api/src/test/java/org/apache/tuscany/sca/test/CallBackApiTestCase.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 junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackApiTestCase extends TestCase {
+
+ private SCADomain domain;
+ private CallBackApiClient aCallBackClient;
+
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("CallBackApiTest.composite");
+
+ aCallBackClient = domain.getService(CallBackApiClient.class, "CallBackApiClient");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-basic/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-basic/pom.xml
new file mode 100644
index 0000000000..444e4449cd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-basic/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-basic
+ Apache Tuscany SCA Callback Basic Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicCallBack.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicClientImpl.java
new file mode 100644
index 0000000000..1bb2dc22b7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 cant 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 cant 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.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-basic/src/main/java/org/apache/tuscany/sca/test/CallBackBasicServiceImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-basic/src/main/resources/CallBackBasicTest.composite b/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/main/resources/CallBackBasicTest.composite
new file mode 100644
index 0000000000..c506956088
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/main/resources/CallBackBasicTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.java b/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.java
new file mode 100644
index 0000000000..177c4bcd18
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-basic/src/test/java/org/apache/tuscany/sca/test/CallBackBasicTestCase.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;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class CallBackBasicTestCase extends TestCase {
+
+ private SCADomain domain;
+ private CallBackBasicClient aCallBackClient;
+
+ public void testCallBackBasic() {
+ aCallBackClient.run();
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ 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.0.1-RC4/itest/callback-complex-type/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/pom.xml
new file mode 100644
index 0000000000..1599d4f1f9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-complex-type
+ Apache Tuscany SCA Callback Complex Type Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeCallBack.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeClientImpl.java
new file mode 100644
index 0000000000..188b1f2c01
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 cant 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 cant 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.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-complex-type/src/main/java/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite b/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite
new file mode 100644
index 0000000000..3f48f16389
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/src/main/resources/CallBackCTypeClient.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-complex-type/src/main/resources/org/apache/tuscany/sca/test/CallBackCTypeServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-complex-type/src/test/java/org/apache/tuscany/sca/test/CallBackCTypeTestCaseFIXME.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-id/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-id/pom.xml
new file mode 100644
index 0000000000..9107cebce9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-id/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-id
+ Apache Tuscany SCA Callback ID Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdCallBack.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdClientImpl.java
new file mode 100644
index 0000000000..fef0eb50b8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 cant 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.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-id/src/main/java/org/apache/tuscany/sca/test/CallBackIdServiceImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-id/src/main/resources/CallBackIdClient.composite b/tags/java/sca/1.0.1-RC4/itest/callback-id/src/main/resources/CallBackIdClient.composite
new file mode 100644
index 0000000000..c9a6ba6258
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-id/src/main/resources/CallBackIdClient.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-id/src/test/java/org/apache/tuscany/sca/test/CallBackIdTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/pom.xml
new file mode 100644
index 0000000000..ec9438bfa9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-multiple-wires
+ Apache Tuscany SCA Callback With Mutiple Wires Test
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl1.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyClientImpl2.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.java
new file mode 100644
index 0000000000..08ab7ca56d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/java/org/apache/tuscany/sca/test/callback/MyServiceImpl.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.callback;
+
+import org.osoa.sca.annotations.Callback;
+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 {
+
+ private MyServiceCallback myServiceCallback;
+
+ /**
+ * The setter used by the runtime to set the callback reference
+ * @param myServiceCallback
+ */
+ @Callback
+ public void setMyServiceCallback(MyServiceCallback myServiceCallback) {
+ this.myServiceCallback = myServiceCallback;
+ }
+
+ public void someMethod(String arg) {
+ // invoke the callback
+ try {
+ myServiceCallback.receiveResult(arg + " -> receiveResult");
+ } catch(RuntimeException e) {
+ System.out.println("RuntimeException invoking receiveResult: " + e.toString());
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite
new file mode 100644
index 0000000000..3dae3ca3a8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/main/resources/CallbackMultiWireTest.composite
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/test/java/org/apache/tuscany/sca/test/callback/CallbackMultiWireTestCase.java b/tags/java/sca/1.0.1-RC4/itest/callback-multiple-wires/src/test/java/org/apache/tuscany/sca/test/callback/CallbackMultiWireTestCase.java
new file mode 100644
index 0000000000..41ba766697
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/pom.xml
new file mode 100644
index 0000000000..cad0efef03
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-set-callback
+ Apache Tuscany SCA Set Callback Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCalbackService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackBadCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackCallbackImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackClientImpl.java
new file mode 100644
index 0000000000..ee14467de0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 executon.
+ */
+
+ 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 exeception 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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackObjectCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.java
new file mode 100644
index 0000000000..8093093968
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackServiceImpl.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.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.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.0.1-RC4/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite
new file mode 100644
index 0000000000..3552ddecab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/main/resources/CallBackSetCallbackTest.composite
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-callback/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-conversation/pom.xml b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/pom.xml
new file mode 100644
index 0000000000..b12761efa5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-callback-set-conversation
+ Apache Tuscany SCA Callback Set Conversation Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.java
new file mode 100644
index 0000000000..eb840a006d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvBadCallback.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 CallBackSetCallbackConvBadCallback {
+
+ 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");
+ return;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java
new file mode 100644
index 0000000000..a32322a5f8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvClientImpl.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.NoRegisteredCallbackException;
+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,
+ //FIXME: remove the following hack, needed to get around current JavaImplementationInvoker limitation
+ CallBackSetCallbackConvCallback {
+
+ @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 Serializeable. Verify successful
+ // execution.
+ //
+
+ aCallbackObject = new CallBackSetCallbackConvObjectCallback();
+ aCallbackObject.incrementCallBackCount();
+
+ ServiceReference aCallBackServiceRef
+ = componentContext.cast(aCallBackService);
+ aCallBackServiceRef.setCallback(aCallbackObject);
+ //FIXME: remove the following workaround for runtime bug
+ aCallBackServiceRef.getService().knockKnock("Knock Knock");
+ //aCallBackService.knockKnock("Knock Knock");
+
+ 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());
+ //FIXME: remove the following workaround for runtime bug
+ aCallBackServiceRef.getService().knockKnock("Knock Knock");
+ //aCallBackService.knockKnock("Knock Knock");
+ }
+
+ //
+ // 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 Serializeable. Verify
+ // an appropriate exception
+ // is thrown.
+ //
+
+ try {
+ ServiceReference aCallBackServiceRef
+ = componentContext.cast(aCallBackService);
+ aCallBackServiceRef.setCallback(new CallBackSetCallbackConvNonSerCallback());
+ //FIXME: remove the following workaround for runtime bug
+ aCallBackServiceRef.getService().knockKnock("Knock Knock");
+ //aCallBackService.knockKnock("Knock Knock");
+ }
+ //
+ // 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);
+
+ }
+
+ //FIXME: remove the following methods, needed to get around current JavaImplementationInvoker limitation
+
+ public void callBackMessage(String aString) {
+ throw new IllegalStateException("CallbackSetCallbackConvClientImpl.callbackMessage called");
+ }
+
+ public void callBackIncrement(String aString) {
+ throw new IllegalStateException("CallbackSetCallbackConvClientImpl.callbackIncrement called");
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.java
new file mode 100644
index 0000000000..789e04e907
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvNonSerCallback.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;
+
+public class CallBackSetCallbackConvNonSerCallback implements CallBackSetCallbackConvCallback {
+
+ private int callBackCount = 0;
+ private Object monitor;
+
+ public CallBackSetCallbackConvNonSerCallback() {
+ super();
+ }
+
+ public synchronized void incrementCallBackCount() {
+ callBackCount++;
+ }
+
+ public synchronized int getCount() {
+ return callBackCount;
+ }
+
+ public void setMonitor(Object anObject) {
+ monitor = anObject;
+ }
+
+ public void callBackMessage(String aString) {
+
+ System.out.println("Entering CallBackSetCallbackConvNonSerCallback callBackMessage: " + aString);
+
+ }
+
+ 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.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.java b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.java
new file mode 100644
index 0000000000..9b998df045
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvObjectCallback.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.test;
+
+
+public class CallBackSetCallbackConvObjectCallback
+ //FIXME: remove the following hack, needed to get around current JavaImplementationInvoker limitation
+ extends CallBackSetCallbackConvClientImpl
+ //implements CallBackSetCallbackConvCallback
+{
+ 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.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-conversation/src/main/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvServiceImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite
new file mode 100644
index 0000000000..ce73417f94
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/main/resources/CallBackSetCallbackConvTest.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/callback-set-conversation/src/test/java/org/apache/tuscany/sca/test/CallBackSetCallbackConvTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/component-type/pom.xml b/tags/java/sca/1.0.1-RC4/itest/component-type/pom.xml
new file mode 100644
index 0000000000..bba077df8e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/component-type/pom.xml
@@ -0,0 +1,46 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-component-type
+ Apache Tuscany SCA Component Type Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/AddService.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/AddService.java
new file mode 100644
index 0000000000..188451ebac
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/AddServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/AddServiceImpl.java
new file mode 100644
index 0000000000..8b6fe066a6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorClient.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorClient.java
new file mode 100644
index 0000000000..08afd922b3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorService.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..031fa8b912
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java
new file mode 100644
index 0000000000..f14ee506df
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/CalculatorServiceImpl.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES 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;
+
+ 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.0.1-RC4/itest/component-type/src/main/java/calculator/DivideService.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/DivideService.java
new file mode 100644
index 0000000000..30d248208b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/DivideServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/DivideServiceImpl.java
new file mode 100644
index 0000000000..f7ac0b7287
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/MultiplyService.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/MultiplyService.java
new file mode 100644
index 0000000000..5290605938
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/MultiplyServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/MultiplyServiceImpl.java
new file mode 100644
index 0000000000..b7dca792b2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/SubtractService.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/SubtractService.java
new file mode 100644
index 0000000000..bf0d1882b6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/java/calculator/SubtractServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/java/calculator/SubtractServiceImpl.java
new file mode 100644
index 0000000000..77b128ab8d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/resources/Calculator.composite b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/Calculator.composite
new file mode 100644
index 0000000000..b229787657
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/Calculator.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/AddServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/AddServiceImpl.componentType
new file mode 100644
index 0000000000..00c48e5a35
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/resources/calculator/CalculatorServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/CalculatorServiceImpl.componentType
new file mode 100644
index 0000000000..74bedc0a98
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/resources/calculator/DivideServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/DivideServiceImpl.componentType
new file mode 100644
index 0000000000..289fcc3e11
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/resources/calculator/MultiplyServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/MultiplyServiceImpl.componentType
new file mode 100644
index 0000000000..2d8a879cda
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/main/resources/calculator/SubtractServiceImpl.componentType b/tags/java/sca/1.0.1-RC4/itest/component-type/src/main/resources/calculator/SubtractServiceImpl.componentType
new file mode 100644
index 0000000000..6214955141
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/component-type/src/test/java/calculator/CalculatorTestCase.java b/tags/java/sca/1.0.1-RC4/itest/component-type/src/test/java/calculator/CalculatorTestCase.java
new file mode 100644
index 0000000000..08fc8e33bf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-composite/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/pom.xml
new file mode 100644
index 0000000000..7b542c40db
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-export-composite
+ Apache Tuscany SCA Contribution Export Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/src/main/java/hello/Hello.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-composite/src/main/java/hello/HelloImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-composite/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-composite/src/main/resources/hello.composite b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-composite/src/main/resources/hello.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java
new file mode 100644
index 0000000000..e8c4eef771
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-composite/src/test/java/org/apache/tuscany/sca/test/contribution/HelloTestCase.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.File;
+import java.io.IOException;
+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.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
+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();
+
+ ModelResolver helloResolver = new ModelResolverImpl(cl);
+ File helloContrib = new File("./target/classes/");
+ URL helloURL = helloContrib.toURL();
+ Contribution consumerContribution =
+ contributionService.contribute("http://import-export/hello", helloURL, helloResolver, false);
+ Composite consumerComposite = consumerContribution.getDeployables().get(0);
+ domain.getDomainComposite().getIncludes().add(consumerComposite);
+ domain.getCompositeBuilder().build(consumerComposite);
+
+ // Start Components from my composite
+ domain.getCompositeActivator().activate(consumerComposite);
+ domain.getCompositeActivator().start(consumerComposite);
+ }
+
+ 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.0.1-RC4/itest/contribution-import-export/export-java/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-java/pom.xml
new file mode 100644
index 0000000000..eaa040dbba
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-java/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-export-java
+ Apache Tuscany SCA Contribution Java Export Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-java/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-java/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-wsdl/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-wsdl/pom.xml
new file mode 100644
index 0000000000..07ffa82c47
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-wsdl/pom.xml
@@ -0,0 +1,31 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-export-wsdl
+ Apache Tuscany SCA Contribution WSDL Export Integration Tests
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-wsdl/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.wsdl b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.wsdl
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/export-wsdl/src/main/resources/helloworld.xsd b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/pom.xml
new file mode 100644
index 0000000000..e09386f5cd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-import-composite
+ Apache Tuscany SCA Contribution Import Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-composite
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldServer.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/helloworld.wsdl b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/helloworld.wsdl
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/helloworld.xsd b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/helloworldws.composite b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-composite/src/main/resources/helloworldws.composite
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..d31b417e24
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-composite/src/test/java/org/apache/tuscany/test/contribution/HelloWorldServerTestCase.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.test.contribution;
+
+import helloworld.HelloWorldService;
+
+import java.io.File;
+import java.io.IOException;
+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();
+ compositeContribution =
+ contributionService.contribute("http://import-export/export-composite", compositeContribURL, false);
+ for (Composite deployable : compositeContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ File helloWorldContribLocation = new File("./target/classes/");
+ URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ helloWorldContribution =
+ contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ 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.0.1-RC4/itest/contribution-import-export/import-java/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/pom.xml
new file mode 100644
index 0000000000..5d49bdf4be
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/pom.xml
@@ -0,0 +1,73 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-import-java
+ Apache Tuscany SCA Contribution Java Import Java Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ itest-contribution-export-java
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-java/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..e5d14f51d4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite
new file mode 100644
index 0000000000..023b2b6aff
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/main/resources/helloworldws.composite
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..432ca868cf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-java/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.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;
+
+import helloworld.HelloWorldService;
+
+import java.io.File;
+import java.io.IOException;
+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();
+ javaContribution = contributionService.contribute("http://import-export/export-java", javaContribURL, false);
+ for (Composite deployable : javaContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ File helloWorldContribLocation = new File("./target/classes/");
+ URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : helloWorldContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : helloWorldContribution.getDeployables() ) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ 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.0.1-RC4/itest/contribution-import-export/import-wsdl/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/pom.xml
new file mode 100644
index 0000000000..723ae65781
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/pom.xml
@@ -0,0 +1,67 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-import-wsdl
+ Apache Tuscany SCA Contribution WSDL Import Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldServer.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/java/helloworld/HelloWorldService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/resources/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/resources/helloworldws.composite b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-import-export/import-wsdl/src/main/resources/helloworldws.composite
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.java
new file mode 100644
index 0000000000..9dea44386c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/import-wsdl/src/test/java/org/apache/tuscany/sca/test/contribution/HelloWorldServerTestCase.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.test.contribution;
+
+import helloworld.HelloWorldService;
+
+import java.io.File;
+import java.io.IOException;
+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();
+ wsdlContribution = contributionService.contribute("http://import-export/export-wsdl", wsdlContribURL, false);
+ for (Composite deployable : wsdlContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ File helloWorldContribLocation = new File("./target/classes/");
+ URL helloWorldContribURL = helloWorldContribLocation.toURL();
+ consumerContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+ for (Composite deployable : consumerContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(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);
+ }
+
+ 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.0.1-RC4/itest/contribution-import-export/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/pom.xml
new file mode 100644
index 0000000000..ef5afe5a01
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-import-export/pom.xml
@@ -0,0 +1,54 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-import-export
+ pom
+ Apache Tuscany SCA Contribution Import/Export Integration Tests
+
+
+ export-wsdl
+ import-wsdl
+ export-composite
+ import-composite
+ export-java
+ import-java
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.0.1-incubating
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/pom.xml
new file mode 100644
index 0000000000..e851a396ab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-multiple
+ Apache Tuscany SCA Multiple Contribution Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/hello/Hello.java b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/hello/Hello.java
new file mode 100644
index 0000000000..313a58a0bf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/hello/Hello.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 hello;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the Hello service.
+ */
+public interface Hello {
+
+ public String getGreetings(String name);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/hello/HelloImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/hello/HelloImpl.java
new file mode 100644
index 0000000000..ff9f6e75f3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-multiple/src/test/java/helloworld/HelloWorldImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/helloworld/HelloWorldImpl.java
new file mode 100644
index 0000000000..c062afaed0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.java b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..a84a578344
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/helloworld/HelloWorldService.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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * 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.0.1-RC4/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java
new file mode 100644
index 0000000000..9f0e5f9854
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/java/test/ContributionTestCase.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES 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 contributio 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 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).toURL();
+ URL helloWorldContribution_one_URL = new java.io.File(helloWorldContribution_one_dir).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://import-export/export-composite", helloContribution_URL, false);
+
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+ for (Composite deployable : helloContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ helloWorldContribution_one =
+ contributionService.contribute("http://import-export/helloworld_one", helloWorldContribution_one_URL, false);
+ for (Composite deployable : helloWorldContribution_one.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(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://import-export/export-composite");
+ contributionService.remove("http://import-export/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.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-export/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite
new file mode 100644
index 0000000000..aeeab337fa
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-export/hello.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-import-one/META-INF/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-import-one/helloworld_one.composite b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution-multiple/src/test/resources/contribution-import-one/helloworld_one.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/pom.xml b/tags/java/sca/1.0.1-RC4/itest/contribution/pom.xml
new file mode 100644
index 0000000000..2712c0f2e8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution
+ Apache Tuscany SCA Contribution Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.0.1-incubating
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/AddService.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/AddService.java
new file mode 100644
index 0000000000..6392676e76
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/AddService.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 calculator;
+
+public interface AddService {
+
+ double add(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/AddServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/AddServiceImpl.java
new file mode 100644
index 0000000000..e9c635e3c8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorClient.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorClient.java
new file mode 100644
index 0000000000..40ca4d9b0f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.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.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorService.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorService.java
new file mode 100644
index 0000000000..ad87375529
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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;
+
+
+/**
+ * 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.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/CalculatorServiceImpl.java
new file mode 100644
index 0000000000..ae4ed12b7b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/main/java/calculator/DivideService.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/DivideService.java
new file mode 100644
index 0000000000..3158458b5e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/DivideService.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 calculator;
+
+public interface DivideService {
+
+ double divide(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/DivideServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/DivideServiceImpl.java
new file mode 100644
index 0000000000..8c33862f6d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/main/java/calculator/MultiplyService.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/MultiplyService.java
new file mode 100644
index 0000000000..62db05175e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/MultiplyService.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 calculator;
+
+public interface MultiplyService {
+
+ double multiply(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/MultiplyServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/MultiplyServiceImpl.java
new file mode 100644
index 0000000000..c7fbc73c00
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/main/java/calculator/SubtractService.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/SubtractService.java
new file mode 100644
index 0000000000..309f88f098
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/SubtractService.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 calculator;
+
+public interface SubtractService {
+
+ double subtract(double n1, double n2);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/SubtractServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/java/calculator/SubtractServiceImpl.java
new file mode 100644
index 0000000000..1a7f145ad8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/main/resources/ContributionTest.composite b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/ContributionTest.composite
new file mode 100644
index 0000000000..d814e439e2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/ContributionTest.composite
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/calculator/Calculator.composite b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/calculator/Calculator.composite
new file mode 100644
index 0000000000..657a2f95d8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/calculator/Calculator.composite
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/calculator/sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/contribution/src/main/resources/calculator/sca-contribution.xml
new file mode 100644
index 0000000000..e95796d83a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java b/tags/java/sca/1.0.1-RC4/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
new file mode 100644
index 0000000000..946f505ead
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.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.contribution;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+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.Contribution;
+import org.apache.tuscany.sca.contribution.DeployedArtifact;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
+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;
+
+ @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();
+ }
+
+ 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;
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId, contributionLocation, resolver, false);
+ assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ public void testStoreContributionPackageInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId, contributionLocation, resolver, 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());
+ }
+
+ public void testStoreContributionStreamInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+
+ InputStream contributionStream = contributionLocation.openStream();
+ try {
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId, contributionLocation, contributionStream, resolver);
+ } 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());
+ }
+
+ public void testStoreDuplicatedContributionInRepository() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId1 = CONTRIBUTION_001_ID;
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId1, contributionLocation, resolver, true);
+ assertNotNull(contributionService.getContribution(contributionId1));
+ String contributionId2 = CONTRIBUTION_002_ID;
+ ModelResolver resolver2 = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId2, contributionLocation, resolver2, true);
+ assertNotNull(contributionService.getContribution(contributionId2));
+ }
+
+ public void testContributeFolder() throws Exception {
+ 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);
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ contributionService.contribute(contributionId, rootContributionFolder.toURL(), resolver, false);
+ assertNotNull(contributionService.getContribution(contributionId));
+ }
+
+ public void testAddDeploymentComposites() throws Exception {
+ URL contributionLocation = getClass().getResource(JAR_CONTRIBUTION);
+ String contributionId = CONTRIBUTION_001_ID;
+ ModelResolver resolver = new ModelResolverImpl(getClass().getClassLoader());
+ Contribution contribution = contributionService.contribute(contributionId, contributionLocation, resolver, 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());
+
+ DeployedArtifact artifact = null;
+ contribution = contributionService.getContribution(contributionId);
+ String id = artifactId.toString();
+ for (DeployedArtifact 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.0.1-RC4/itest/contribution/src/test/resources/deployables/sample-calculator.jar b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/test/resources/deployables/sample-calculator.jar differ
diff --git a/tags/java/sca/1.0.1-RC4/itest/contribution/src/test/resources/repository/sample-calculator.jar b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/contribution/src/test/resources/repository/sample-calculator.jar differ
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations-ws/pom.xml b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/pom.xml
new file mode 100644
index 0000000000..aa5291d89e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/pom.xml
@@ -0,0 +1,58 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-conversations-ws
+ Apache Tuscany SCA Conversations Over binding.ws Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
new file mode 100644
index 0000000000..640ec22a4f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 caonversational 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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
new file mode 100644
index 0000000000..7a4c733fb0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.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;
+
+import org.osoa.sca.ServiceReference;
+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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java
new file mode 100644
index 0000000000..a8682c71a4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
new file mode 100644
index 0000000000..a9f264da56
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.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;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing caonversational 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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java
new file mode 100644
index 0000000000..3c833d676a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java
new file mode 100644
index 0000000000..b4fbaad662
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java
new file mode 100644
index 0000000000..6737d7fe99
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java
new file mode 100644
index 0000000000..42d5da0bc0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java
new file mode 100644
index 0000000000..3e4ed440a4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
new file mode 100644
index 0000000000..a7b5b1aff5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.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)
+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.0.1-RC4/itest/conversations-ws/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/main/resources/ConversationAge.composite b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/ConversationAge.composite
new file mode 100644
index 0000000000..abd1c35ced
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/ConversationAge.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversationId.composite b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversationId.composite
new file mode 100644
index 0000000000..e61eb08194
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversationId.composite
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversational.composite b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversational.composite
new file mode 100644
index 0000000000..5e1e1092f7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/main/resources/conversational.composite
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java
new file mode 100644
index 0000000000..9cce341c60
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java
new file mode 100644
index 0000000000..f3b4a92d6f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalJ2SETestCase.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/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.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
new file mode 100644
index 0000000000..ee623f32e9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations-ws/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
@@ -0,0 +1,585 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationalTestCase {
+
+ private SCADomain domain;
+ private ConversationalClient conversationalStatelessClientStatelessService;
+ private ConversationalClient conversationalStatelessClientStatefulService;
+ private ConversationalClient conversationalStatefulClientStatelessService;
+ private ConversationalClient conversationalStatefulClientStatefulService;
+ private ConversationalClient conversationalStatelessClientRequestService;
+ private ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @Before
+ public 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");
+
+ // 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());
+ }
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ domain.close();
+ }
+
+ // 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() {
+ conversationalStatelessClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithCallback() {
+ 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() {
+ conversationalStatelessClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithCallback() {
+ 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() {
+ conversationalStatefulClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithCallback() {
+ 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() {
+ conversationalStatefulClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithCallback() {
+ 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() {
+ ConversationalServiceRequestImpl.calls = new StringBuffer();
+ conversationalStatelessClientRequestService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,",
+ ConversationalServiceRequestImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithCallback() {
+ 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() {
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+ conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithCallback() {
+ 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.0.1-RC4/itest/conversations/pom.xml b/tags/java/sca/1.0.1-RC4/itest/conversations/pom.xml
new file mode 100644
index 0000000000..fb3992d390
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-conversations
+ Apache Tuscany SCA Conversations Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationIdService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalCallback.java
new file mode 100644
index 0000000000..640ec22a4f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 caonversational 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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.java
new file mode 100644
index 0000000000..7a4c733fb0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalClient.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;
+
+import org.osoa.sca.ServiceReference;
+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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalReferenceClient.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalService.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/ConversationalServiceNonConversationalCallback.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.java
new file mode 100644
index 0000000000..a9f264da56
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/NonConversationalCallback.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;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing caonversational 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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationAgeComponentImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationIdComponentImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationMaxIdleComponentImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalClientStatelessImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalReferenceClientImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceRequestImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatefulNonConversationalCallbackImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessImpl.java
new file mode 100644
index 0000000000..a7b5b1aff5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/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.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)
+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.0.1-RC4/itest/conversations/src/main/java/org/apache/tuscany/sca/itest/conversational/impl/ConversationalServiceStatelessScopeImpl.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/main/resources/ConversationAge.composite b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/ConversationAge.composite
new file mode 100644
index 0000000000..abd1c35ced
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/ConversationAge.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversationId.composite b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversationId.composite
new file mode 100644
index 0000000000..e61eb08194
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversationId.composite
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversational.composite b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversational.composite
new file mode 100644
index 0000000000..77cafbea6b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/main/resources/conversational.composite
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationIdTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalAgeTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalJ2SETestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java b/tags/java/sca/1.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
new file mode 100644
index 0000000000..d41e4af482
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/conversations/src/test/java/org/apache/tuscany/sca/itest/conversational/ConversationalTestCase.java
@@ -0,0 +1,580 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ConversationalTestCase {
+
+ private SCADomain domain;
+ private ConversationalClient conversationalStatelessClientStatelessService;
+ private ConversationalClient conversationalStatelessClientStatefulService;
+ private ConversationalClient conversationalStatefulClientStatelessService;
+ private ConversationalClient conversationalStatefulClientStatefulService;
+ private ConversationalClient conversationalStatelessClientRequestService;
+ private ConversationalClient conversationalStatefulClientNonConversationalCallbackStatelessService;
+
+ @Before
+ public 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");
+
+ // 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());
+ }
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ domain.close();
+ }
+
+ // 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() {
+ conversationalStatelessClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatefulConversationWithCallback() {
+ 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() {
+ conversationalStatelessClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessStatelessConversationWithCallback() {
+ 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() {
+ conversationalStatefulClientStatefulService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatefulConversationWithCallback() {
+ 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() {
+ conversationalStatefulClientStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,destroy,init,incrementCount,destroy,init,retrieveCount,destroy,init,endConversation,destroy,",
+ ConversationalServiceStatelessImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulStatelessConversationWithCallback() {
+ 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() {
+ ConversationalServiceRequestImpl.calls = new StringBuffer();
+ conversationalStatelessClientRequestService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,",
+ ConversationalServiceRequestImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatelessRequestConversationWithCallback() {
+ 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() {
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls = new StringBuffer();
+ conversationalStatefulClientNonConversationalCallbackStatelessService.runConversationCheckingScope();
+ Assert.assertEquals("init,initializeCount,incrementCount,retrieveCount,endConversation,destroy,",
+ ConversationalServiceStatefulNonConversationalCallbackImpl.calls.toString());
+ }
+
+ @Test
+ public void testStatefulNonConversationalCallbackStatefulConversationWithCallback() {
+ 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.0.1-RC4/itest/databindings/common/pom.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/pom.xml
new file mode 100644
index 0000000000..4d29d5476b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/pom.xml
@@ -0,0 +1,120 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.0.1-incubating
+
+
+ 4.0.0
+
+ itest-databindings-common
+ 1.0.1-incubating
+ jar
+ Apache Tuscany SCA Databinding Common Integration Tests
+
+
+
+
+ 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
+
+
+ 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.0-incubating
+
+
+ generate-sdo
+ generate-sources
+
+
+
+ ${basedir}/src/main/resources/generate/generate.xsd
+
+
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.java b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.java
new file mode 100644
index 0000000000..73dfebb73c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/java/org/apache/tuscany/sca/itest/generate/Generate.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.generate;
+
+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.TemplateType;
+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 file
+ * add a line to pom for code gen
+ * 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 conveniet 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 confiured file holds a list of types
+ // that the velocity templates expand into appropriate methods and method calls
+ List fileList = generateType.getInputFile();
+
+ //Intialise 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);
+ FileWriter fw = new FileWriter(filename);
+ 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 mainline
+ *
+ * @param args the target directory where project in which files are being generated
+ */
+ public static void main(String[] args) {
+ Generate gen = new Generate();
+ gen.generate(args[0]);
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/DatabindingTestCase.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/DatabindingTestCase.java.vm
new file mode 100644
index 0000000000..b2346aa973
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/generate/Greeter.wsdl.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/Greeter.wsdl.vm
new file mode 100644
index 0000000000..88616cc997
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterService.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterService.java.vm
new file mode 100644
index 0000000000..b0e298b823
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 automcatically 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.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceClient.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceClient.java.vm
new file mode 100644
index 0000000000..ee73db6152
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceClientImpl.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceClientImpl.java.vm
new file mode 100644
index 0000000000..57827d27b9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 automcatically 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.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceImpl.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/GreeterServiceImpl.java.vm
new file mode 100644
index 0000000000..1fd7509667
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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 automcatically 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.0.1-RC4/itest/databindings/common/src/main/resources/generate/generate.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/generate.xsd
new file mode 100644
index 0000000000..1fabedf55f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/generate/generate.xsd
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/wsdl/Dummy.txt b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/wsdl/Dummy.txt
new file mode 100644
index 0000000000..8927d725b6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Annotation.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Annotation.xml
new file mode 100644
index 0000000000..f1f4346e58
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Annotation.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Annotation.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Annotation.xsd
new file mode 100644
index 0000000000..1fae43eb09
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xml
new file mode 100644
index 0000000000..c20c80b658
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xsd
new file mode 100644
index 0000000000..bd3db2e030
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Attribute.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml
new file mode 100644
index 0000000000..30e4979dca
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd
new file mode 100644
index 0000000000..e7738dcff7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeReference.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml
new file mode 100644
index 0000000000..9552421e2d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd
new file mode 100644
index 0000000000..c7b9655749
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithDefaultValue.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml
new file mode 100644
index 0000000000..5e5e7fbd55
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd
new file mode 100644
index 0000000000..5c455c2ab5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithFixedValue.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml
new file mode 100644
index 0000000000..635e851632
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd
new file mode 100644
index 0000000000..004dab4fbb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOAliasName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml
new file mode 100644
index 0000000000..136092951b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd
new file mode 100644
index 0000000000..796f08e1cf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDODataType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml
new file mode 100644
index 0000000000..927b94885c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd
new file mode 100644
index 0000000000..93f83cd0a1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml
new file mode 100644
index 0000000000..ea7db70595
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd
new file mode 100644
index 0000000000..c64323e7e1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertySDOOppositePropertyType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml
new file mode 100644
index 0000000000..85c7d85fd4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd
new file mode 100644
index 0000000000..543f276c50
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOPropertyType.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml
new file mode 100644
index 0000000000..fcd281539b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd
new file mode 100644
index 0000000000..1610c2b861
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/AttributeWithSDOString.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml
new file mode 100644
index 0000000000..36a0760a61
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ anySimpleType
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd
new file mode 100644
index 0000000000..999b72bb35
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnySimpleType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml
new file mode 100644
index 0000000000..5849165fe0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd
new file mode 100644
index 0000000000..71dad561ca
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml
new file mode 100644
index 0000000000..8acf9376d7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xml
@@ -0,0 +1,24 @@
+
+
+
+ http://tempuri.org
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd
new file mode 100644
index 0000000000..a49987c352
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInAnyURI.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml
new file mode 100644
index 0000000000..a35b6e174a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xml
@@ -0,0 +1,24 @@
+
+
+
+ ABCDEF
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd
new file mode 100644
index 0000000000..e1995890f9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBase64Binary.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml
new file mode 100644
index 0000000000..91cfce51b8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xml
@@ -0,0 +1,27 @@
+
+
+
+ true
+ false
+ 1
+ 0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd
new file mode 100644
index 0000000000..a2f86ba8c5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInBoolean.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml
new file mode 100644
index 0000000000..907474cd1b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xml
@@ -0,0 +1,25 @@
+
+
+
+ 127
+ -127
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd
new file mode 100644
index 0000000000..a2f6bcfa77
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInByte.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml
new file mode 100644
index 0000000000..c5820e1a2e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001-01-01
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd
new file mode 100644
index 0000000000..f4d596bfe3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDate.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xml
new file mode 100644
index 0000000000..0debe2fec5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd
new file mode 100644
index 0000000000..b5bcfdcfd4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDateTime.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml
new file mode 100644
index 0000000000..7f001254cc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xml
@@ -0,0 +1,23 @@
+
+
+
+ -1.23456789
+ 1.23456789
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd
new file mode 100644
index 0000000000..8d4d106f59
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDecimal.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xml
new file mode 100644
index 0000000000..f875b9f94d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd
new file mode 100644
index 0000000000..4c8a39b06c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDouble.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml
new file mode 100644
index 0000000000..7d343d6dda
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xml
@@ -0,0 +1,24 @@
+
+
+
+ P1D
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd
new file mode 100644
index 0000000000..bb12bc04a9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInDuration.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml
new file mode 100644
index 0000000000..7a81f3b0dd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0.0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd
new file mode 100644
index 0000000000..f0e1c21233
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInFloat.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml
new file mode 100644
index 0000000000..d35568b3c9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xml
@@ -0,0 +1,24 @@
+
+
+
+ ---01
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd
new file mode 100644
index 0000000000..92bd9a4b66
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGDay.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml
new file mode 100644
index 0000000000..52cdfa8c4e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xml
@@ -0,0 +1,24 @@
+
+
+
+ --01--
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd
new file mode 100644
index 0000000000..78d001a585
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonth.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml
new file mode 100644
index 0000000000..2609a858f7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xml
@@ -0,0 +1,24 @@
+
+
+
+ --01-01
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd
new file mode 100644
index 0000000000..38f6c55059
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGMonthDay.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml
new file mode 100644
index 0000000000..7868a47ca3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd
new file mode 100644
index 0000000000..0d65b124ff
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYear.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml
new file mode 100644
index 0000000000..3f5080d49f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xml
@@ -0,0 +1,24 @@
+
+
+
+ 2001-01
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd
new file mode 100644
index 0000000000..340555dc5f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInGYearMonth.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml
new file mode 100644
index 0000000000..0deb7af980
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0F00
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd
new file mode 100644
index 0000000000..8059fe6da0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInHexBinary.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml
new file mode 100644
index 0000000000..06c92ce19b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd
new file mode 100644
index 0000000000..7b1f02d1d4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInID.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml
new file mode 100644
index 0000000000..9bc0cefd0f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd
new file mode 100644
index 0000000000..0c207983bc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREF.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml
new file mode 100644
index 0000000000..f91b602f99
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd
new file mode 100644
index 0000000000..b99bf01b73
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInIDREFS.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml
new file mode 100644
index 0000000000..c99698e175
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xml
@@ -0,0 +1,25 @@
+
+
+
+ -2147483648
+ 2147483647
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd
new file mode 100644
index 0000000000..b5b9b0d1eb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInt.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml
new file mode 100644
index 0000000000..80d22ce057
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xml
@@ -0,0 +1,25 @@
+
+
+
+ -2147483648
+ 2147483647
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd
new file mode 100644
index 0000000000..4902935db5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml
new file mode 100644
index 0000000000..664bf824b4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xml
@@ -0,0 +1,24 @@
+
+
+
+ EN
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd
new file mode 100644
index 0000000000..5d3658d224
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLanguage.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml
new file mode 100644
index 0000000000..c5861fa92a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xml
@@ -0,0 +1,25 @@
+
+
+
+ -9223372036854775808
+ 9223372036854775807
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd
new file mode 100644
index 0000000000..0aa4710057
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInLong.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml
new file mode 100644
index 0000000000..1f95950394
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xml
@@ -0,0 +1,24 @@
+
+
+
+ NCName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd
new file mode 100644
index 0000000000..6ee9c435db
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNCName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml
new file mode 100644
index 0000000000..0297f1aeb4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xml
@@ -0,0 +1,24 @@
+
+
+
+ NMTOKEN
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd
new file mode 100644
index 0000000000..56d027bdbb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKEN.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml
new file mode 100644
index 0000000000..81ba1069bd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xml
@@ -0,0 +1,24 @@
+
+
+
+ NMTOKENS
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd
new file mode 100644
index 0000000000..866ab73024
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNMTOKENS.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml
new file mode 100644
index 0000000000..8bb3a08b94
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xml
@@ -0,0 +1,24 @@
+
+
+
+ tns:BuiltInNotationNotation
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd
new file mode 100644
index 0000000000..c7c62f812b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNOTATION.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml
new file mode 100644
index 0000000000..8235718c5e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xml
@@ -0,0 +1,24 @@
+
+
+
+ Name
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd
new file mode 100644
index 0000000000..36caba2f16
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml
new file mode 100644
index 0000000000..599c428a44
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ -1
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd
new file mode 100644
index 0000000000..389d5a99f0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNegativeInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml
new file mode 100644
index 0000000000..919c4a20ee
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ 0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd
new file mode 100644
index 0000000000..59887078b5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonNegativeInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml
new file mode 100644
index 0000000000..79011f26ab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ -1
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd
new file mode 100644
index 0000000000..5de7d64d7b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNonPositiveInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml
new file mode 100644
index 0000000000..c40be9e18b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xml
@@ -0,0 +1,24 @@
+
+
+
+ normalizedString
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd
new file mode 100644
index 0000000000..d4a78787b8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInNormalizedString.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml
new file mode 100644
index 0000000000..c30434de66
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xml
@@ -0,0 +1,24 @@
+
+
+
+ 1
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd
new file mode 100644
index 0000000000..5381590cd1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInPositiveInteger.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml
new file mode 100644
index 0000000000..4cd6ea7e72
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xml
@@ -0,0 +1,24 @@
+
+
+
+ QName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd
new file mode 100644
index 0000000000..e8faf6225b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInQName.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml
new file mode 100644
index 0000000000..b4375467c4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xml
@@ -0,0 +1,25 @@
+
+
+
+ -32768
+ 32767
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd
new file mode 100644
index 0000000000..a4f564d9b7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInShort.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml
new file mode 100644
index 0000000000..d30ab85530
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xml
@@ -0,0 +1,24 @@
+
+
+
+ string
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd
new file mode 100644
index 0000000000..8abb34b5a5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInString.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml
new file mode 100644
index 0000000000..7fd9a061ae
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd
new file mode 100644
index 0000000000..1615976813
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInTime.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml
new file mode 100644
index 0000000000..cd567ba528
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xml
@@ -0,0 +1,24 @@
+
+
+
+ token
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd
new file mode 100644
index 0000000000..0beaac571f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInToken.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml
new file mode 100644
index 0000000000..025362defb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 255
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd
new file mode 100644
index 0000000000..d6d951fe5d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedByte.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml
new file mode 100644
index 0000000000..5736a8c121
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 4294967295
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd
new file mode 100644
index 0000000000..242be1d53b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedInt.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml
new file mode 100644
index 0000000000..d728115a77
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 18446744073709551615
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd
new file mode 100644
index 0000000000..108e3a8619
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedLong.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml
new file mode 100644
index 0000000000..d4ffae5e17
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xml
@@ -0,0 +1,25 @@
+
+
+
+ 0
+ 65535
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd
new file mode 100644
index 0000000000..5ee5e0229e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/BuiltInUnsignedShort.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml
new file mode 100644
index 0000000000..3d5aed5aa8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd
new file mode 100644
index 0000000000..e7b80ab11c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeComplexContentRestrictingComplexType.xsd
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml
new file mode 100644
index 0000000000..2b4fe5594e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ SimpleTypeWithName
+ SimpleTypeWithNameExtended
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd
new file mode 100644
index 0000000000..fc4deb63c2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingComplexType.xsd
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml
new file mode 100644
index 0000000000..03570f41d9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ComplexTypeExtendingSimpeTypeElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd
new file mode 100644
index 0000000000..c754502645
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeExtendingSimpleType.xsd
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml
new file mode 100644
index 0000000000..4603793bfc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ComplexTypeSimpleContentRestrictingComplexTypeElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd
new file mode 100644
index 0000000000..4bcd2f8c46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeSimpleContentRestrictingComplexType.xsd
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml
new file mode 100644
index 0000000000..a6861f803a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ BaseElement
+ ExtensionElement
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd
new file mode 100644
index 0000000000..8bb251cab2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithAbstract.xsd
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xml
new file mode 100644
index 0000000000..467ec007ed
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd
new file mode 100644
index 0000000000..8d00646678
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithCDATA.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml
new file mode 100644
index 0000000000..7deafd798a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd
new file mode 100644
index 0000000000..72ac75fee0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithContent.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml
new file mode 100644
index 0000000000..f6208f81b3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ Some
+ Mixed
+ SimpleTypeWithName
+ Content
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd
new file mode 100644
index 0000000000..1f26e13673
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithMixed.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml
new file mode 100644
index 0000000000..97de7b98eb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd
new file mode 100644
index 0000000000..67716553d8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenAttributes.xsd
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml
new file mode 100644
index 0000000000..5941348921
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ Some
+ Mixed
+ SimpleTypeWithName
+ Content
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd
new file mode 100644
index 0000000000..24d5d09054
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOpenContent.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml
new file mode 100644
index 0000000000..f684d06a4d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ SomeData
+
+
+ idvalue2
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd
new file mode 100644
index 0000000000..de4a8a666d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithOppositeProperty.xsd
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml
new file mode 100644
index 0000000000..242908bd27
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd
new file mode 100644
index 0000000000..4c00fbe295
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOAliasName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml
new file mode 100644
index 0000000000..925e8625d5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd
new file mode 100644
index 0000000000..b12bec040b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml
new file mode 100644
index 0000000000..c73708ce46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd
new file mode 100644
index 0000000000..795c3ea7d9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithSDOSequence.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml
new file mode 100644
index 0000000000..3ebdc89ae0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd
new file mode 100644
index 0000000000..21546d0f67
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutContent.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml
new file mode 100644
index 0000000000..89657e42ca
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd
new file mode 100644
index 0000000000..d01b4172e4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ComplexTypeWithoutName.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml
new file mode 100644
index 0000000000..82fd1eedaf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xml
@@ -0,0 +1,23 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd
new file mode 100644
index 0000000000..e1dcf06194
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/DefaultNamespace.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml
new file mode 100644
index 0000000000..ebf03c9d5d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ ElementInAllOne
+ ElementInAllTwo
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd
new file mode 100644
index 0000000000..8b9ba5b4b8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInAll.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml
new file mode 100644
index 0000000000..26466b1b39
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xml
@@ -0,0 +1,25 @@
+
+
+
+ Element1InChoice
+ Element2InChoice
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd
new file mode 100644
index 0000000000..ff418c56ab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementInChoice.xsd
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml
new file mode 100644
index 0000000000..27bb1ce9cc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ ChangeSummaryText
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd
new file mode 100644
index 0000000000..2bf1df8c99
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSDOChangeSummaryType.xsd
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml
new file mode 100644
index 0000000000..9b5561ed43
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithDefaultDefault
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd
new file mode 100644
index 0000000000..0b4e7bdf45
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithDefault.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml
new file mode 100644
index 0000000000..f1b7cd264c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithFixedFixed
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd
new file mode 100644
index 0000000000..a2c8456257
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithFixed.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml
new file mode 100644
index 0000000000..1f60b0423f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithSDODataTypeElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd
new file mode 100644
index 0000000000..21e55ab8c1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDODataType.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml
new file mode 100644
index 0000000000..30762f4912
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd
new file mode 100644
index 0000000000..5bf35d0d70
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOOppositePropertyType.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml
new file mode 100644
index 0000000000..2dd01e4090
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xml
@@ -0,0 +1,24 @@
+
+
+
+ idvalue0
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd
new file mode 100644
index 0000000000..6920cd8dd0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOPropertyType.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml
new file mode 100644
index 0000000000..6a526bdc47
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementOfSimpleTypeWithSDOStringElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd
new file mode 100644
index 0000000000..1117a95eb8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementOfSimpleTypeWithSDOString.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xml
new file mode 100644
index 0000000000..ab91458bff
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd
new file mode 100644
index 0000000000..3e015843b5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementSubstitutionGroupBase.xsd
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml
new file mode 100644
index 0000000000..b6d68fd08a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xml
@@ -0,0 +1,25 @@
+
+
+
+ ElementWithMaxOccursElement1
+ ElementWithMaxOccursElement2
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd
new file mode 100644
index 0000000000..d4453a4477
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithMaxOccurs.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml
new file mode 100644
index 0000000000..6de3adc937
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithNillableElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd
new file mode 100644
index 0000000000..786ab226da
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithNillable.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml
new file mode 100644
index 0000000000..64093aa803
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithSDOAliasName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd
new file mode 100644
index 0000000000..01f4c2b1ef
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOAliasName.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml
new file mode 100644
index 0000000000..774646f682
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+ ElementWithSDONameElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd
new file mode 100644
index 0000000000..34da37564c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ElementWithSDOName.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml
new file mode 100644
index 0000000000..a1fb3aa803
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd
new file mode 100644
index 0000000000..8eb7a4fce4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementComplexType.xsd
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml
new file mode 100644
index 0000000000..f68eb1939d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xml
@@ -0,0 +1,24 @@
+
+
+
+ GlobalElementSimpleType
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd
new file mode 100644
index 0000000000..b9f77e6658
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/GlobalElementSimpleType.xsd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xml
new file mode 100644
index 0000000000..fd28850050
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xml
@@ -0,0 +1,30 @@
+
+
+
+
+ SimpleTypeWithName
+
+ SomeString
+ SomeString
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xsd
new file mode 100644
index 0000000000..eae93fd44a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Import.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd
new file mode 100644
index 0000000000..a7e568decf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/ImportedSchema.xsd
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xml
new file mode 100644
index 0000000000..d4b9e24fa6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xsd
new file mode 100644
index 0000000000..34ff314a19
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Include.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Interop.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Interop.xsd
new file mode 100644
index 0000000000..ae22ab2c44
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Interop.xsd
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xml
new file mode 100644
index 0000000000..b75ac6500a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xml
@@ -0,0 +1,24 @@
+
+
+
+tns:Tuscany
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xsd
new file mode 100644
index 0000000000..6ad019cb81
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Notation.xsd
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Person.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Person.xsd
new file mode 100644
index 0000000000..5f5021b15e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/Person.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml
new file mode 100644
index 0000000000..6c5ad88ff4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xml
@@ -0,0 +1,25 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd
new file mode 100644
index 0000000000..6b7e39b334
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SDOJavaPackage.xsd
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml
new file mode 100644
index 0000000000..f9d4a24a49
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithAbstractExtensionElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd
new file mode 100644
index 0000000000..f649e2ba83
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithAbstract.xsd
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml
new file mode 100644
index 0000000000..410df4b7e4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithExtendedInstanceClassElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd
new file mode 100644
index 0000000000..36629e8295
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithExtendedInstanceClass.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml
new file mode 100644
index 0000000000..7b74867c03
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithInstanceClassElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd
new file mode 100644
index 0000000000..7a08de84be
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithInstanceClass.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml
new file mode 100644
index 0000000000..708d526f44
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xml
@@ -0,0 +1,24 @@
+
+
+
+ listmember1 listmember2
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd
new file mode 100644
index 0000000000..681cf7d5af
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithList.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml
new file mode 100644
index 0000000000..e404ac86b7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithNameElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd
new file mode 100644
index 0000000000..af0431f048
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithName.xsd
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml
new file mode 100644
index 0000000000..c86a0f6bcb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithSDONameElement
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd
new file mode 100644
index 0000000000..89b00a36cc
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithSDOName.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml
new file mode 100644
index 0000000000..399b0d8175
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xml
@@ -0,0 +1,25 @@
+
+
+
+ EN
+ 01:02:03
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd
new file mode 100644
index 0000000000..fee04b9f24
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithUnion.xsd
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml
new file mode 100644
index 0000000000..bc8cf35368
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ SimpleTypeWithoutName
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd
new file mode 100644
index 0000000000..536aa822de
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/SimpleTypeWithoutName.xsd
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml
new file mode 100644
index 0000000000..da2929776e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xml
@@ -0,0 +1,24 @@
+
+
+
+ SimpleTypeWithName
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd
new file mode 100644
index 0000000000..ace5427786
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/TargetNamespace.xsd
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/datagraph.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/datagraph.xsd
new file mode 100644
index 0000000000..e6b9697a8d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd
new file mode 100644
index 0000000000..7387568942
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoJava.xsd
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd
new file mode 100644
index 0000000000..c5aabc9cc8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/main/resources/xsd/sdoModel.xsd
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/common/src/test/java/org/apache/tuscany/sca/itest/generate/GenerateTestCase.java b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/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.0.1-RC4/itest/databindings/config.png b/tags/java/sca/1.0.1-RC4/itest/databindings/config.png
new file mode 100644
index 0000000000..7912019e9d
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/itest/databindings/config.png differ
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/config.svg b/tags/java/sca/1.0.1-RC4/itest/databindings/config.svg
new file mode 100644
index 0000000000..aaf027e2df
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/config.svg
@@ -0,0 +1,117 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.png b/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.png
new file mode 100644
index 0000000000..76a9c71b7d
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.png differ
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.svg b/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.svg
new file mode 100644
index 0000000000..d6850ccf7d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/databinding.svg
@@ -0,0 +1,242 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/interop.png b/tags/java/sca/1.0.1-RC4/itest/databindings/interop.png
new file mode 100644
index 0000000000..005e0f24ea
Binary files /dev/null and b/tags/java/sca/1.0.1-RC4/itest/databindings/interop.png differ
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/interop.svg b/tags/java/sca/1.0.1-RC4/itest/databindings/interop.svg
new file mode 100644
index 0000000000..03897c6d09
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/interop.svg
@@ -0,0 +1,352 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/interop/pom.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/pom.xml
new file mode 100644
index 0000000000..e0db112bb9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/pom.xml
@@ -0,0 +1,223 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.0.1-incubating
+
+
+ 4.0.0
+
+ itest-databindings-interop
+ 1.0.1-incubating
+ jar
+ Apache Tuscany SCA DataBinding Interop Integration Tests
+
+
+
+
+ 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-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.bind
+ jaxb-impl
+ 2.1.4
+ runtime
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1.1
+
+
+ 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.0.1-incubating
+ 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.0.1-RC4/itest/databindings/interop/src/main/resources/generate/InteropDatabindingTestCase.java.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/src/main/resources/generate/InteropDatabindingTestCase.java.vm
new file mode 100644
index 0000000000..7bdfc57924
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/interop/src/main/resources/generate/JAXBGreeter.wsdl.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/src/main/resources/generate/JAXBGreeter.wsdl.vm
new file mode 100644
index 0000000000..38bfccce0c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/interop/src/main/resources/generate/SDOGreeter.wsdl.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/src/main/resources/generate/SDOGreeter.wsdl.vm
new file mode 100644
index 0000000000..6f02af4c9d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/interop/src/main/resources/generate/generate.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/src/main/resources/generate/generate.xml
new file mode 100644
index 0000000000..8453dd56b4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/interop/src/main/resources/generate/interopgreeter.composite.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/interop/src/main/resources/generate/interopgreeter.composite.vm
new file mode 100644
index 0000000000..36797fde57
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/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.0.1-RC4/itest/databindings/jaxbgen/pom.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/pom.xml
new file mode 100644
index 0000000000..2c1c5c3944
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/pom.xml
@@ -0,0 +1,251 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.0.1-incubating
+
+
+ 4.0.0
+
+ itest-databindings-jaxb
+ 1.0.1-incubating
+ jar
+ Apache Tuscany SCA JAXB Databinding Integration Tests
+
+
+
+
+ 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-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.0.1-incubating
+ runtime
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ compile
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ 2.1.4
+ runtime
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1.1
+
+
+
+
+
+
+ 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
+ build-helper-maven-plugin
+ 1.0
+
+
+ add-test-source
+ generate-sources
+
+ add-test-source
+
+
+
+ target/jaxws-source
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ generate-test-source
+ process-resources
+
+ java
+
+
+
+
+ org.apache.tuscany.sca.itest.generate.Generate
+
+ ${project.build.directory}
+
+
+
+
+ org.codehaus.mojo
+ jaxws-maven-plugin
+
+
+ process-resources
+
+ wsimport
+
+
+
+
+ org.apache.tuscany.sca.itest.jaxbdatabinding.generated
+ ${project.build.directory}/classes/wsdl
+
+ Greeter.wsdl
+
+ ${project.build.directory}/jaxws-source
+ true
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/generate/generate.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/generate/generate.xml
new file mode 100644
index 0000000000..8381a164ea
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/generate/generate.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+ GreeterService.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/jaxbdatabinding
+ org.apache.tuscany.sca.itest.jaxbdatabinding
+
+
+ GreeterServiceImpl.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/jaxbdatabinding
+ org.apache.tuscany.sca.itest.jaxbdatabinding
+
+
+ GreeterServiceClient.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/jaxbdatabinding
+ org.apache.tuscany.sca.itest.jaxbdatabinding
+
+
+ GreeterServiceClientImpl.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/jaxbdatabinding
+ org.apache.tuscany.sca.itest.jaxbdatabinding
+
+
+ DatabindingTestCase.java.vm
+ ../src/test/java/org/apache/tuscany/sca/itest/jaxbdatabinding
+ org.apache.tuscany.sca.itest.jaxbdatabinding
+
+
+ Greeter.wsdl.vm
+ classes/wsdl
+
+
+ Person.xsd
+ xsd
+ org.apache.tuscany.sca.itest.jaxbdatabinding.generated
+ ObjectFactory
+ http://apache.org/tuscany/sca/itest/databinding/types
+ p
+
+ PersonType
+
+ ObjectFactory factory = new ObjectFactory();
+ 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.sca.itest.jaxbdatabinding.generated
+ ObjectFactory
+ http://www.apache.org/tuscany/interop
+ i
+
+
+ AttributeComplexType
+
+ ObjectFactory factory = new ObjectFactory();
+ org.apache.tuscany.sca.itest.jaxbdatabinding.generated.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
+
+ ObjectFactory factory = new ObjectFactory();
+ param = factory.createAttributeReferenceComplexType();
+
+ param.setReferencedAttribute("SomeText");
+
+
+ param.setReferencedAttribute("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getReferencedAttribute());
+
+
+
+ SimpleTypeWithAbstractComplexType
+
+ ObjectFactory factory = new ObjectFactory();
+ param = factory.createSimpleTypeWithAbstractComplexType();
+ param.setSimpleTypeWithAbstractExtensionElement("SomeText");
+
+
+ param.setSimpleTypeWithAbstractExtensionElement("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithAbstractExtensionElement());
+
+
+
+ SimpleTypeWithNameComplexType
+
+ ObjectFactory factory = new ObjectFactory();
+ param = factory.createSimpleTypeWithNameComplexType();
+ param.setSimpleTypeWithNameElement("SomeText");
+
+
+ param.setSimpleTypeWithNameElement("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithNameElement());
+
+
+
+ ComplexTypeWithContentType
+
+ ObjectFactory factory = new ObjectFactory();
+ param = factory.createComplexTypeWithContentType();
+ param.setSimpleTypeWithName("SomeText");
+
+
+ param.setSimpleTypeWithName("SomeChangedText");;
+
+
+ assertEquals("data not changed corretly", "SomeChangedText", result.getSimpleTypeWithName());
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/greeter.composite b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/greeter.composite
new file mode 100644
index 0000000000..ae0740e6fe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/jaxbgen/src/main/resources/greeter.composite
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/pom.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/pom.xml
new file mode 100644
index 0000000000..28cf8a1365
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ itest-databindings
+ Apache Tuscany SCA Databindings Integration Tests
+ 1.0.1-incubating
+
+
+ pom
+
+ install
+
+
+ common
+ sdogen
+ jaxbgen
+ interop
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/readme.html b/tags/java/sca/1.0.1-RC4/itest/databindings/readme.html
new file mode 100644
index 0000000000..24a44e4ed7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/readme.html
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+ Tuscany SCA Integration Test Databindings
+
+
+
+
+
+
Tuscany SCA Integation Test Databindings
+
+
Overview
+
+
+This integration test tests the Tuscany SCA databinding implementation by passing various data structures
+across various bindings using the supported databindings. There are tests for the individual databindings
+which exercise various bindings with the same databinding at client and server ends of each binding. There
+is also an integration test which exercises the transformer chains by specifying different databindings at
+client and server ends of the binding.
+
+
+In doing this testing it is apparent that there is a lot of repetition in creating client, services, idl and
+type for each of the data types for each of the bindings for each of the databindings. To reduce the amount
+of effort required to maintain the tests as new types, bindings and databindings are added the test cases
+themselves are generated from configuration files.
+
+
+
Test Structure
+
+Databindings/Common - hold files common across all tests
+Databindings/Interop - test the transformer chains with combinations of databindings
+Databindings/sdogen and jaxbgen - test each databindings independently
+
+
Test Generation
+
+To reduce the amount of manual effort involved in building and maintaining tests cases the test cases
+themselves are generated at run time using a set of velocity templates. Each test module has a generate.xml
+file in the resources/generate directory which tells the generator what to do. The file looks like this.
+
+
+
+Each element describes a velocit template to use in the test. The generator process is to expand
+each velocity template provided with all of the types specified in the sections.
+
+
+Each element describes a schema file used in the test. It also contains a description of each
+data type that will be tested. The generator then arranges for the databinding being tested to generate
+appropriate Java classes to represent the type at runtime. The individual databinding tests use the following
+flow.
+
+
+Create data object at client
+Client passes data object to server
+Server modifies data object
+Server returns modified data object to client
+Client tests that modified data object is as expected
+
+Hence the CreateTypeCode, ModifyTypeCode and ResultComparison elements which contain the type specific code
+that is used in the tests.
+
+
+
The Common Directory
+
+The common directory contains the information that is common across all of the tests. This includes the
+common velocity templates and the source for the generator that reads the config.xml for each test. Common
+also contains all of the data type schema as these are common across all tests. Each test pom is written so
+that the contents of the common project are expanded into the tests target directory before the test starts.
+In this way all of the common elements are available for the test generation phase and at test runtime.
+
+
+
Individual Databinding Tests
+
+The individual databinding tests, for example, sdogen and jaxbgen, are mostly empty as their content is
+generated at runtime. The configuration and any test specific templates can be found in the resources/generate
+directory. Some files are hand crafted for each test and live in their static position in the tests directory
+structure.
+
+
+Each test uses the same scenario
+
+
+
+The interface exposed by the greeter service provides a greet method for each data type being tested, for
+example,
+
+These methods are taken from the SDO databinding test and hence PersonType, AttributeComplexType, etc. will
+have been generated by the SDO static type generator.
+
+
+Hence this tests a single databinding across a variety of data types and a variety of bindings. New bindings
+be tested by extending the composite. Be datatypes can be tested by updating the confix.xml file.
+
+
Databinding Interoperability Tests
+
+This test uses the generated client, services and types from the individual databinding tests. It does not
+regenerate them and you will see a dependency in the interop test pom on the other databinding tests. Is also
+has some generate elements because the composite file must currently have import statements for all of the
+SDO factories required during tested.
+
+
+The scenario used here is,
+
+
+
+A chain of components is built up for each binding. Each component, drawn from the the inidividual databinding
+tests, tests the full range of datatypes. The client components are designed so that they can be chained together
+and so tranformations across different databindings is tests. The service component simply changes the data
+content and returns it as before.
+
+
Building And Running The Tests
+
+The tests can be built by doing the following.
+
+
+cd sca/itest/databindings
+mvn
+
+
+The only modification to this process is required if a new input file is added to the tests suite. In this
+case you will need to edit the config.xml files as appropriate but run mvn twice. This may sound a little
+odd but currently the sdo test uses its pom file to generate the require SDO types. As the test is self
+generating the pom file will not be updated to include the new type file until the second time it's run. The
+aim is at some point to remove this feature from the pom.
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/pom.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/pom.xml
new file mode 100644
index 0000000000..34064ed9f2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/pom.xml
@@ -0,0 +1,225 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.0.1-incubating
+
+
+ 4.0.0
+
+ itest-databindings-sdo
+ 1.0.1-incubating
+ jar
+ Apache Tuscany SCA SDO Databinding Integration Tests
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ https://maven-repository.dev.java.net/nonav/repository
+ legacy
+
+
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ https://maven-repository.dev.java.net/repository
+ legacy
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ ${pom.version}
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-core-databinding
+ ${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
+ 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
+ itest-databindings-common
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ test
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ generate-sources
+
+ unpack
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings-common
+ ${project.version}
+ true
+ ${project.build.directory}/classes
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.0
+
+
+ add-test-source
+ generate-sources
+
+ add-test-source
+
+
+
+ target/sdo-source
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ generate-test-source
+ process-resources
+
+ java
+
+
+
+
+ org.apache.tuscany.sca.itest.generate.Generate
+
+ ${project.build.directory}
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+ generate-sdo
+ process-resources
+
+
+
+ ${project.build.directory}/classes/wsdl/Greeter.wsdl
+ org.apache.tuscany.sca.itest.databinding.services
+
+
+ ${project.build.directory}/classes/xsd/Person.xsd
+ org.apache.tuscany.sca.itest.databinding.types
+
+
+ ${project.build.directory}/classes/xsd/Interop.xsd
+ org.apache.tuscany.interop
+
+
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/generate.xml b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/generate.xml
new file mode 100644
index 0000000000..5487b113e8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/generate.xml
@@ -0,0 +1,173 @@
+
+
+
+
+ pom.xml.vm
+ ..
+
+
+ greeter.composite.vm
+ classes
+
+
+ GreeterService.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/sdodatabinding
+ org.apache.tuscany.sca.itest.sdodatabinding
+
+
+ GreeterServiceImpl.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/sdodatabinding
+ org.apache.tuscany.sca.itest.sdodatabinding
+
+
+ GreeterServiceClientImpl.java.vm
+ ../src/main/java/org/apache/tuscany/sca/itest/sdodatabinding
+ org.apache.tuscany.sca.itest.sdodatabinding
+
+
+ DatabindingTestCase.java.vm
+ ../src/test/java/org/apache/tuscany/sca/itest/sdodatabinding
+ org.apache.tuscany.sca.itest.sdodatabinding
+
+
+ Greeter.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.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/greeter.composite.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/greeter.composite.vm
new file mode 100644
index 0000000000..9494d70f96
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/greeter.composite.vm
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ #foreach( $file in $fileList )
+
+ #end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/pom.xml.vm b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/pom.xml.vm
new file mode 100644
index 0000000000..481f2f85c6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/databindings/sdogen/src/main/resources/generate/pom.xml.vm
@@ -0,0 +1,223 @@
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings
+ 1.0.1-incubating
+
+
+ 4.0.0
+
+ itest-databindings-sdo
+ 1.0.1-incubating
+ jar
+ Apache Tuscany SCA SDO Databinding Integration Tests
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ https://maven-repository.dev.java.net/nonav/repository
+ legacy
+
+
+
+
+
+
+ true
+
+ java.net
+ java.net Maven 1.x Repository
+ https://maven-repository.dev.java.net/repository
+ legacy
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ ${pom.version}
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-core-databinding
+ ${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
+ 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
+ itest-databindings-common
+ ${pom.version}
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ test
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ generate-sources
+
+ unpack
+
+
+
+
+ org.apache.tuscany.sca
+ itest-databindings-common
+ ${project.version}
+ true
+ ${project.build.directory}/classes
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.0
+
+
+ add-test-source
+ generate-sources
+
+ add-test-source
+
+
+
+ target/sdo-source
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ generate-test-source
+ process-resources
+
+ java
+
+
+
+
+ org.apache.tuscany.sca.itest.generate.Generate
+
+ ${project.build.directory}
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+ generate-sdo
+ process-resources
+
+
+
+ ${project.build.directory}/classes/wsdl/Greeter.wsdl
+ org.apache.tuscany.sca.itest.databinding.services
+
+ #foreach( $file in $fileList )
+
+ ${project.build.directory}/classes/$file.getFilePath()/$file.getFileName()
+ $file.getJavaPackage()
+
+ #end
+
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/pom.xml b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/pom.xml
new file mode 100644
index 0000000000..afda204cb9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/pom.xml
@@ -0,0 +1,222 @@
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ 4.0.0
+ itest-exceptions-cross-binding-ws
+ Apache Tuscany SCA WS Binding Exceptions Integration Tests
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1
+
+
+
+ javax.jws
+ jsr181-api
+ 1.0-MR1
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-core-databinding
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-jaxb
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-java-xml
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ test
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ test
+
+
+
+
+
+ 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
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ -Djava.endorsed.dirs=target/endorsed
+
+
+
+
+ org.codehaus.mojo
+ jaxws-maven-plugin
+
+
+ generate-jaxb
+ generate-resources
+
+ wsimport
+
+
+
+
+ ${basedir}/src/main/resources/wsdl
+ true
+ org.apache.tuscany.sca.test.exceptions.impl.jaxb
+ true
+
+
+
+ javax.jws
+ jsr181-api
+ 1.0-MR1
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-maven-wsdl2java
+ 1.0.1-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.java
new file mode 100644
index 0000000000..f5e36db7cd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.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.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockExceptionTest;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ *
+ */
+@Remotable
+public interface StockExceptionTestJAXB extends StockExceptionTest {
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.java
new file mode 100644
index 0000000000..65751175fb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.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.test.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault_Exception;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.MarketClosedFault;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.ObjectFactory;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockOffer;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.TestNotDeclaredAtSourceFault;
+import org.osoa.sca.annotations.Service;
+
+/**
+ *
+ */
+@Service(StockExceptionTestJAXB.class)
+public class StockExchangeJaxB implements StockExceptionTestJAXB {
+
+ /**
+ *
+ */
+ public StockExchangeJaxB() {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockExceptionTest#stockQuoteOffer(org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockOffer)
+ */
+ public StockOffer stockQuoteOffer(StockOffer input) throws InvalidSymbolFault_Exception, MarketClosedFault, TestNotDeclaredAtSourceFault{
+
+ System.out.println("stockQuoteOffer '" + input + "'");
+
+ String symbol = input.getSymbol();
+ if ("IBM".equals(symbol)) {
+ input.setPrice(99.00F);
+ return input;
+
+ }
+ else if ("CLOSED".equals(input.getName())) {
+ throw new MarketClosedFault("TO LATE!", 3);
+
+ } else if( "testNotDeclaredAtSourceTest".equals(input.getName())){
+
+ throw new TestNotDeclaredAtSourceFault("not declared", "fault info");
+
+ }
+ ObjectFactory jaxbOjectFactory = new ObjectFactory();
+
+ InvalidSymbolFault faultinfo = jaxbOjectFactory.createInvalidSymbolFault();
+
+ faultinfo.setOffer(input);
+
+ throw new InvalidSymbolFault_Exception("bad symbol", faultinfo);
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.java
new file mode 100644
index 0000000000..5f65d293ea
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.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.exceptions.impl;
+
+import java.rmi.RemoteException;
+
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.MarketClosedSDOException;
+
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+public interface StockTraderSDO {
+
+ StockOffer testTrading() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+ void testInvalidSymbolSDOException() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+ Object testNotDeclaredAtSourceTest();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
new file mode 100644
index 0000000000..7d303887e7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.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.test.exceptions.impl;
+
+import java.rmi.RemoteException;
+
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.MarketClosedSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.StockExceptionTest;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import stockexceptiontestservice.scatesttool.ScatesttoolFactory;
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+/**
+ *
+ */
+@Service(StockTraderSDO.class)
+public class StockTraderSDOImpl implements StockTraderSDO {
+
+ private StockExceptionTest exchangeJaxb;
+
+ /**
+ *
+ */
+
+ public StockTraderSDOImpl() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Reference
+ public void setExchangeJaxb(StockExceptionTest exchangeJaxb) {
+ this.exchangeJaxb = exchangeJaxb;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO#tradingTest()
+ */
+ public StockOffer testTrading() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+ stockOffer.setName("IBM");
+ stockOffer.setSymbol("IBM");
+ stockOffer.setPrice(100.00F); // offer to buy at max $100.00
+
+ StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ return stockOfferAccepted;
+
+ }
+
+ public void testInvalidSymbolSDOException() throws RemoteException, InvalidSymbolSDOException,
+ MarketClosedSDOException {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+ // set up for a InvalidSymbolSDOException
+ stockOffer.setName("");
+ stockOffer.setSymbol("IBM0");
+
+ stockOffer.setPrice(11.0F); // offer to buy at max $100.00
+ exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ }
+
+ public void marketClosedSDOExceptionTest() {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+
+ // set up for a MarketClosedSDOException
+ stockOffer.setName("CLOSED");
+ stockOffer.setSymbol("MBI");
+ stockOffer.setPrice(Float.NaN); // offer to buy at max $100.00
+ try {
+ StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
+ stockOfferAccepted.getPrice(); // the price actually bought.
+ } catch (RemoteException e) {
+
+ e.printStackTrace();
+ } catch (InvalidSymbolSDOException e) {
+
+ e.printStackTrace();
+ } catch (MarketClosedSDOException e) {
+
+ e.printStackTrace();
+ }
+ }
+
+ public Object testNotDeclaredAtSourceTest() {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+
+ // set up for a MarketClosedSDOException
+ stockOffer.setName("testNotDeclaredAtSourceTest");
+ stockOffer.setSymbol("TNDAS");
+ stockOffer.setPrice(Float.NaN); // offer to buy at max $100.00
+ try {
+ return exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ } catch (Exception e) {
+ return e;
+
+ }
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
new file mode 100644
index 0000000000..1567aaba02
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.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.test.exceptions.sdohandgen;
+
+import javax.xml.namespace.QName;
+
+import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
+
+/**
+ *
+ */
+public class InvalidSymbolSDOException extends Exception {
+ private static final long serialVersionUID = -3824848763300476741L;
+
+ public static final QName FAULT_ELEMENT = new QName("http://scatesttool.stockexceptiontestservice", "InvalidSymbolFault");
+
+ /**
+ *
+ */
+ public InvalidSymbolSDOException() {
+
+ }
+
+ /**
+ * @param message
+ * @param faultInfo
+ */
+ public InvalidSymbolSDOException(String message, InvalidSymbolFault faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+
+ }
+
+ /**
+ * @param cause
+ */
+ public InvalidSymbolSDOException(InvalidSymbolFault faultInfo, Throwable cause) {
+ super(cause);
+ this.faultInfo = faultInfo;
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public InvalidSymbolSDOException(String message, InvalidSymbolFault faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+
+ }
+
+ // *** Below was hand added ... tooling needs to do this ***/
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ */
+ private InvalidSymbolFault faultInfo;
+
+ /**
+ * @return returns fault bean:
+ * org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault
+ */
+ public InvalidSymbolFault getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
new file mode 100644
index 0000000000..8b28a652b0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.exceptions.sdohandgen;
+
+import javax.xml.namespace.QName;
+
+/**
+ *
+ */
+public class MarketClosedSDOException extends Exception {
+ private static final long serialVersionUID = 7652466275656958031L;
+
+ public static final QName FAULT_ELEMENT =
+ new QName("http://scatesttool.stockexceptiontestservice", "MarketClosedFault");
+
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ */
+ private int faultInfo;
+
+ /**
+ *
+ */
+ public MarketClosedSDOException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public MarketClosedSDOException(String message, int faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @param cause
+ */
+ public MarketClosedSDOException(int faultInfo, Throwable cause) {
+ super(cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public MarketClosedSDOException(String message, int faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @return returns fault bean: int
+ */
+ public int getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
new file mode 100644
index 0000000000..add0f6193b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.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.
+ */
+/**
+ * StockExceptionTest.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: #axisVersion# #today#
+ */
+package org.apache.tuscany.sca.test.exceptions.sdohandgen;
+
+import org.osoa.sca.annotations.Remotable;
+
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+/*
+ * StockExceptionTest java interface
+ */
+
+@Remotable
+public interface StockExceptionTest {
+
+ /**
+ * Auto generated method signatures
+ *
+ * @param param0
+ */
+ StockOffer stockQuoteOffer(StockOffer param0)
+ throws java.rmi.RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/ExceptionTest.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/ExceptionTest.composite
new file mode 100644
index 0000000000..acecdff613
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/ExceptionTest.composite
@@ -0,0 +1,23 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/intracomposite.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/intracomposite.composite
new file mode 100644
index 0000000000..d571c7b44f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/intracomposite.composite
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
new file mode 100644
index 0000000000..d70cdad313
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl/StockExceptionTest.wsdl b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl/StockExceptionTest.wsdl
new file mode 100644
index 0000000000..40e87953b6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/wsdl/StockExceptionTest.wsdl
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/xsd/StockExceptionTest.xsd b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/xsd/StockExceptionTest.xsd
new file mode 100644
index 0000000000..9759647cfe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/main/resources/xsd/StockExceptionTest.xsd
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCaseFIXME.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCaseFIXME.java
new file mode 100644
index 0000000000..45918cb85c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding-ws/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCaseFIXME.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.exceptions;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+
+import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+public class IntraCompositeTestCaseFIXME extends TestCase {
+ private SCADomain domain;
+ private StockTraderSDO stockTrader;
+
+ public void testTrading() {
+ try {
+ StockOffer sp = stockTrader.testTrading();
+ assertNotNull(sp);
+ assertEquals(99.00F, sp.getPrice());
+ assertEquals("IBM", sp.getSymbol());
+ } catch (Exception e) {
+
+ e.printStackTrace();
+ fail(e + "");
+
+ }
+
+ }
+
+ public void testInvalidSymbolSDOException() {
+ try {
+ stockTrader.testInvalidSymbolSDOException();
+ fail("Expected InvalidSymbolSDOException");
+ } catch (InvalidSymbolSDOException e) {
+ InvalidSymbolFault isf = e.getFaultInfo();
+
+ assertNotNull(isf);
+ StockOffer sp = isf.getOffer();
+ assertEquals(11.00F, sp.getPrice());
+ assertEquals("IBM0", sp.getSymbol());
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Expected InvalidSymbolSDOException" + e);
+
+ }
+ }
+
+ public void _testNotDeclaredAtSourceException() {
+
+ Object ret = stockTrader.testNotDeclaredAtSourceTest();
+
+ assertNotNull(ret);
+
+ assertEquals(TransformationException.class, ret.getClass());
+
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("intracomposite.composite");
+ stockTrader = domain.getService(StockTraderSDO.class, "stockTraderSDOComponent");
+ assertNotNull(stockTrader);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/pom.xml b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/pom.xml
new file mode 100644
index 0000000000..dbd8962890
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/pom.xml
@@ -0,0 +1,216 @@
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ 4.0.0
+ itest-exceptions-cross-binding
+ Apache Tuscany SCA Cross-Binding Exceptions Integration Tests
+
+
+
+ com.sun.xml.ws
+ jaxws-rt
+ 2.1
+
+
+
+ javax.jws
+ jsr181-api
+ 1.0-MR1
+
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-sca
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-core-databinding
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-jaxb
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-java-xml
+ 1.0.1-incubating
+ compile
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ test
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+ test
+
+
+
+
+
+
+ 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
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ -Djava.endorsed.dirs=target/endorsed
+
+
+
+
+ org.codehaus.mojo
+ jaxws-maven-plugin
+
+
+ generate-jaxb
+ generate-resources
+
+ wsimport
+
+
+
+
+ ${basedir}/src/main/resources/wsdl
+ true
+ org.apache.tuscany.sca.test.exceptions.impl.jaxb
+ true
+
+
+
+ javax.jws
+ jsr181-api
+ 1.0-MR1
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-maven-wsdl2java
+ 1.0.1-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.java
new file mode 100644
index 0000000000..f5e36db7cd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExceptionTestJAXB.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.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockExceptionTest;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ *
+ */
+@Remotable
+public interface StockExceptionTestJAXB extends StockExceptionTest {
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.java
new file mode 100644
index 0000000000..65751175fb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockExchangeJaxB.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.test.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault_Exception;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.MarketClosedFault;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.ObjectFactory;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockOffer;
+import org.apache.tuscany.sca.test.exceptions.impl.jaxb.TestNotDeclaredAtSourceFault;
+import org.osoa.sca.annotations.Service;
+
+/**
+ *
+ */
+@Service(StockExceptionTestJAXB.class)
+public class StockExchangeJaxB implements StockExceptionTestJAXB {
+
+ /**
+ *
+ */
+ public StockExchangeJaxB() {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockExceptionTest#stockQuoteOffer(org.apache.tuscany.sca.test.exceptions.impl.jaxb.StockOffer)
+ */
+ public StockOffer stockQuoteOffer(StockOffer input) throws InvalidSymbolFault_Exception, MarketClosedFault, TestNotDeclaredAtSourceFault{
+
+ System.out.println("stockQuoteOffer '" + input + "'");
+
+ String symbol = input.getSymbol();
+ if ("IBM".equals(symbol)) {
+ input.setPrice(99.00F);
+ return input;
+
+ }
+ else if ("CLOSED".equals(input.getName())) {
+ throw new MarketClosedFault("TO LATE!", 3);
+
+ } else if( "testNotDeclaredAtSourceTest".equals(input.getName())){
+
+ throw new TestNotDeclaredAtSourceFault("not declared", "fault info");
+
+ }
+ ObjectFactory jaxbOjectFactory = new ObjectFactory();
+
+ InvalidSymbolFault faultinfo = jaxbOjectFactory.createInvalidSymbolFault();
+
+ faultinfo.setOffer(input);
+
+ throw new InvalidSymbolFault_Exception("bad symbol", faultinfo);
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.java
new file mode 100644
index 0000000000..5f65d293ea
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDO.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.exceptions.impl;
+
+import java.rmi.RemoteException;
+
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.MarketClosedSDOException;
+
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+public interface StockTraderSDO {
+
+ StockOffer testTrading() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+ void testInvalidSymbolSDOException() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+ Object testNotDeclaredAtSourceTest();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.java
new file mode 100644
index 0000000000..7d303887e7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/StockTraderSDOImpl.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.test.exceptions.impl;
+
+import java.rmi.RemoteException;
+
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.MarketClosedSDOException;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.StockExceptionTest;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import stockexceptiontestservice.scatesttool.ScatesttoolFactory;
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+/**
+ *
+ */
+@Service(StockTraderSDO.class)
+public class StockTraderSDOImpl implements StockTraderSDO {
+
+ private StockExceptionTest exchangeJaxb;
+
+ /**
+ *
+ */
+
+ public StockTraderSDOImpl() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Reference
+ public void setExchangeJaxb(StockExceptionTest exchangeJaxb) {
+ this.exchangeJaxb = exchangeJaxb;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO#tradingTest()
+ */
+ public StockOffer testTrading() throws RemoteException, InvalidSymbolSDOException, MarketClosedSDOException {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+ stockOffer.setName("IBM");
+ stockOffer.setSymbol("IBM");
+ stockOffer.setPrice(100.00F); // offer to buy at max $100.00
+
+ StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ return stockOfferAccepted;
+
+ }
+
+ public void testInvalidSymbolSDOException() throws RemoteException, InvalidSymbolSDOException,
+ MarketClosedSDOException {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+ // set up for a InvalidSymbolSDOException
+ stockOffer.setName("");
+ stockOffer.setSymbol("IBM0");
+
+ stockOffer.setPrice(11.0F); // offer to buy at max $100.00
+ exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ }
+
+ public void marketClosedSDOExceptionTest() {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+
+ // set up for a MarketClosedSDOException
+ stockOffer.setName("CLOSED");
+ stockOffer.setSymbol("MBI");
+ stockOffer.setPrice(Float.NaN); // offer to buy at max $100.00
+ try {
+ StockOffer stockOfferAccepted = exchangeJaxb.stockQuoteOffer(stockOffer);
+ stockOfferAccepted.getPrice(); // the price actually bought.
+ } catch (RemoteException e) {
+
+ e.printStackTrace();
+ } catch (InvalidSymbolSDOException e) {
+
+ e.printStackTrace();
+ } catch (MarketClosedSDOException e) {
+
+ e.printStackTrace();
+ }
+ }
+
+ public Object testNotDeclaredAtSourceTest() {
+ StockOffer stockOffer = ScatesttoolFactory.INSTANCE.createStockOffer();
+
+ // set up for a MarketClosedSDOException
+ stockOffer.setName("testNotDeclaredAtSourceTest");
+ stockOffer.setSymbol("TNDAS");
+ stockOffer.setPrice(Float.NaN); // offer to buy at max $100.00
+ try {
+ return exchangeJaxb.stockQuoteOffer(stockOffer);
+
+ } catch (Exception e) {
+ return e;
+
+ }
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.java
new file mode 100644
index 0000000000..1567aaba02
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/InvalidSymbolSDOException.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.test.exceptions.sdohandgen;
+
+import javax.xml.namespace.QName;
+
+import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
+
+/**
+ *
+ */
+public class InvalidSymbolSDOException extends Exception {
+ private static final long serialVersionUID = -3824848763300476741L;
+
+ public static final QName FAULT_ELEMENT = new QName("http://scatesttool.stockexceptiontestservice", "InvalidSymbolFault");
+
+ /**
+ *
+ */
+ public InvalidSymbolSDOException() {
+
+ }
+
+ /**
+ * @param message
+ * @param faultInfo
+ */
+ public InvalidSymbolSDOException(String message, InvalidSymbolFault faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+
+ }
+
+ /**
+ * @param cause
+ */
+ public InvalidSymbolSDOException(InvalidSymbolFault faultInfo, Throwable cause) {
+ super(cause);
+ this.faultInfo = faultInfo;
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public InvalidSymbolSDOException(String message, InvalidSymbolFault faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+
+ }
+
+ // *** Below was hand added ... tooling needs to do this ***/
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ */
+ private InvalidSymbolFault faultInfo;
+
+ /**
+ * @return returns fault bean:
+ * org.apache.tuscany.sca.test.exceptions.impl.jaxb.InvalidSymbolFault
+ */
+ public InvalidSymbolFault getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
new file mode 100644
index 0000000000..8b28a652b0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/MarketClosedSDOException.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.exceptions.sdohandgen;
+
+import javax.xml.namespace.QName;
+
+/**
+ *
+ */
+public class MarketClosedSDOException extends Exception {
+ private static final long serialVersionUID = 7652466275656958031L;
+
+ public static final QName FAULT_ELEMENT =
+ new QName("http://scatesttool.stockexceptiontestservice", "MarketClosedFault");
+
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ */
+ private int faultInfo;
+
+ /**
+ *
+ */
+ public MarketClosedSDOException() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public MarketClosedSDOException(String message, int faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @param cause
+ */
+ public MarketClosedSDOException(int faultInfo, Throwable cause) {
+ super(cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public MarketClosedSDOException(String message, int faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ * @return returns fault bean: int
+ */
+ public int getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.java
new file mode 100644
index 0000000000..add0f6193b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/java/org/apache/tuscany/sca/test/exceptions/sdohandgen/StockExceptionTest.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.
+ */
+/**
+ * StockExceptionTest.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: #axisVersion# #today#
+ */
+package org.apache.tuscany.sca.test.exceptions.sdohandgen;
+
+import org.osoa.sca.annotations.Remotable;
+
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+/*
+ * StockExceptionTest java interface
+ */
+
+@Remotable
+public interface StockExceptionTest {
+
+ /**
+ * Auto generated method signatures
+ *
+ * @param param0
+ */
+ StockOffer stockQuoteOffer(StockOffer param0)
+ throws java.rmi.RemoteException, InvalidSymbolSDOException, MarketClosedSDOException;
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/ExceptionTest.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/ExceptionTest.composite
new file mode 100644
index 0000000000..872fd721d1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/ExceptionTest.composite
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/intracomposite.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/intracomposite.composite
new file mode 100644
index 0000000000..83526cb6a1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/intracomposite.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
new file mode 100644
index 0000000000..d70cdad313
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl.sdo/StockExceptionTest.wsdl
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl/StockExceptionTest.wsdl b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl/StockExceptionTest.wsdl
new file mode 100644
index 0000000000..33b830c856
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/wsdl/StockExceptionTest.wsdl
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/xsd/StockExceptionTest.xsd b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/xsd/StockExceptionTest.xsd
new file mode 100644
index 0000000000..9759647cfe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/main/resources/xsd/StockExceptionTest.xsd
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
new file mode 100644
index 0000000000..3f8dd1bbaf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-cross-binding/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.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.exceptions;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.exceptions.impl.StockTraderSDO;
+import org.apache.tuscany.sca.test.exceptions.sdohandgen.InvalidSymbolSDOException;
+
+import stockexceptiontestservice.scatesttool.InvalidSymbolFault;
+import stockexceptiontestservice.scatesttool.StockOffer;
+
+public class IntraCompositeTestCase extends TestCase {
+ private SCADomain domain;
+
+ private StockTraderSDO stockTrader;
+
+ public void testTrading() {
+ try {
+ StockOffer sp = stockTrader.testTrading();
+ assertNotNull(sp);
+ assertEquals(99.00F, sp.getPrice());
+ assertEquals("IBM", sp.getSymbol());
+ } catch (Exception e) {
+
+ e.printStackTrace();
+ fail(e + "");
+
+ }
+
+ }
+
+ public void testInvalidSymbolSDOException() {
+ try {
+ stockTrader.testInvalidSymbolSDOException();
+ fail("Expected InvalidSymbolSDOException");
+ } catch (InvalidSymbolSDOException e) {
+ InvalidSymbolFault isf = e.getFaultInfo();
+
+ assertNotNull(isf);
+ StockOffer sp = isf.getOffer();
+ assertEquals(11.00F, sp.getPrice());
+ assertEquals("IBM0", sp.getSymbol());
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Expected InvalidSymbolSDOException" + e);
+
+ }
+ }
+
+ public void testNotDeclaredAtSourceException() {
+
+ Object ret = stockTrader.testNotDeclaredAtSourceTest();
+
+ assertNotNull(ret);
+
+ assertEquals(TransformationException.class, ret.getClass());
+
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("ExceptionTest.composite");
+ stockTrader = domain.getService(StockTraderSDO.class, "stockTraderSDOComponent");
+ assertNotNull(stockTrader);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/pom.xml b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/pom.xml
new file mode 100644
index 0000000000..b183bce4e2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/pom.xml
@@ -0,0 +1,59 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-exceptions-simple-ws
+ Apache Tuscany Test for Simple Exceptions over Web Services
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/BusinessException.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/BusinessException.java
new file mode 100644
index 0000000000..afab612e7a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/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 com.example;
+
+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.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClient.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClient.java
new file mode 100644
index 0000000000..0c72b52ed9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClient.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.example;
+
+public interface ExampleClient {
+ void runTest();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClientImpl.java
new file mode 100644
index 0000000000..640a0babc6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleClientImpl.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 com.example;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ExampleClient.class)
+@Scope("COMPOSITE")
+public class ExampleClientImpl implements ExampleClient {
+
+ private ExampleService myService;
+
+ @Reference
+ public void setMyService(ExampleService myService) {
+ this.myService = myService;
+ }
+
+ public void runTest() {
+ try {
+ Object result = myService.hello("John");
+ System.out.println("myService returned " + result.getClass().getName());
+ } catch(BusinessException e) {
+ System.out.println("caught exception from hello(): " + e.getMessage());
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleService.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleService.java
new file mode 100644
index 0000000000..30ea559694
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleService.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 com.example;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface ExampleService {
+
+ String hello(String name) throws BusinessException;
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleServiceImpl.java
new file mode 100644
index 0000000000..b1556d20a5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/java/com/example/ExampleServiceImpl.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.example;
+
+public class ExampleServiceImpl implements ExampleService {
+ public String hello(String name) throws BusinessException {
+ throw new BusinessException("bad news");
+ //return "Hello, " + name;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/example.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/example.composite
new file mode 100644
index 0000000000..8c33a22e58
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/example.composite
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/wsdl/ExampleService.wsdl b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/wsdl/ExampleService.wsdl
new file mode 100644
index 0000000000..04a061d5e5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/main/resources/wsdl/ExampleService.wsdl
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/test/java/com/example/ExampleTestCase.java b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/test/java/com/example/ExampleTestCase.java
new file mode 100644
index 0000000000..740af4f43d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions-simple-ws/src/test/java/com/example/ExampleTestCase.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 com.example;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class ExampleTestCase extends TestCase {
+
+ private SCADomain scaDomain;
+ private ExampleClient client;
+
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("example.composite");
+ client = scaDomain.getService(ExampleClient.class, "ExampleClientComponent");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ public void test() throws Exception {
+ client.runTest();
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/pom.xml b/tags/java/sca/1.0.1-RC4/itest/exceptions/pom.xml
new file mode 100644
index 0000000000..848557b798
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-exceptions
+ Apache Tuscany SCA Exceptions Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/Checked.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/Checked.java
new file mode 100644
index 0000000000..b95b0ccb31
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/Checked.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.exceptions;
+
+
+public class Checked extends Exception {
+ private static final long serialVersionUID = -129752837478357452L;
+
+ /**
+ *
+ */
+ public Checked() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public Checked(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public Checked(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public Checked(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionHandler.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionHandler.java
new file mode 100644
index 0000000000..0d14240513
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionHandler.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.exceptions;
+
+public interface ExceptionHandler {
+
+ public abstract void testing();
+
+ public abstract Checked getTheBad();
+
+ public abstract String getTheGood();
+
+ public abstract UnChecked getTheUgly();
+
+}
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionThrower.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionThrower.java
new file mode 100644
index 0000000000..80073e7679
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/ExceptionThrower.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.exceptions;
+
+public interface ExceptionThrower {
+ public static final String SO_THEY_SAY = "All is good that ends good.";
+
+ public String theGood() throws org.apache.tuscany.sca.test.exceptions.Checked;
+
+ public String theBad() throws org.apache.tuscany.sca.test.exceptions.Checked;
+
+ public String theUgly() throws org.apache.tuscany.sca.test.exceptions.Checked;
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/UnChecked.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/UnChecked.java
new file mode 100644
index 0000000000..453528444d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/UnChecked.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.exceptions;
+
+public class UnChecked extends RuntimeException {
+ private static final long serialVersionUID = -1318118082838092244L;
+
+ /**
+ *
+ */
+ public UnChecked() {
+
+ }
+
+ /**
+ * @param message
+ */
+ public UnChecked(String message) {
+ super(message);
+
+ }
+
+ /**
+ * @param cause
+ */
+ public UnChecked(Throwable cause) {
+ super(cause);
+
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public UnChecked(String message, Throwable cause) {
+ super(message, cause);
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionHandlerImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionHandlerImpl.java
new file mode 100644
index 0000000000..32a23c5e7d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionHandlerImpl.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.Checked;
+import org.apache.tuscany.sca.test.exceptions.ExceptionHandler;
+import org.apache.tuscany.sca.test.exceptions.ExceptionThrower;
+import org.apache.tuscany.sca.test.exceptions.UnChecked;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("COMPOSITE")
+public class ExceptionHandlerImpl implements ExceptionHandler {
+ static final String INIT = "INIT";
+
+ private ExceptionThrower exceptionThrower;
+
+ private String theGood;
+
+ private Checked theBad;
+
+ private UnChecked theUgly;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.exceptions.impl.ExceptionHandler#testing()
+ */
+ public void testing() {
+
+ assert exceptionThrower != null : "'exceptionThrower' never wired";
+ String result = INIT;
+ try {
+ theGood = result = exceptionThrower.theGood();
+ assert result == ExceptionThrower.SO_THEY_SAY;
+ } catch (Throwable e) {
+ assert result == INIT;
+ assert false;
+ e.printStackTrace();
+ }
+
+ result = INIT;
+ try {
+ result = exceptionThrower.theBad();
+ // incredible
+ assert false : "Expected 'Check' Exception";
+
+ } catch (Checked e) {
+ // This is good...
+ assert result == INIT;
+ theBad = e;
+ } catch (Throwable t) {
+ // This is not so good.
+ t.printStackTrace();
+ assert result == INIT;
+ assert false : "Got wrong exception '" + t.getClass().getName();
+ }
+
+ result = INIT;
+ try {
+ result = exceptionThrower.theUgly();
+ // incredible
+ assert false : "Expected 'UnCheck' Exception";
+
+ } catch (Checked e) {
+ // This is not so good...
+ assert false : "Got wrong exception '" + e.getClass().getName();
+ assert result == INIT;
+ } catch (UnChecked e) {
+ theUgly = e;
+
+ } catch (Throwable t) {
+ // This is not good.
+ assert false;
+ assert result == INIT;
+
+ System.out.println(ExceptionThrower.SO_THEY_SAY + " " + INIT);
+ }
+
+ }
+
+ @Reference
+ public void setExceptionThrower(ExceptionThrower exceptionThrower) {
+ this.exceptionThrower = exceptionThrower;
+ }
+
+ public String getTheGood() {
+ return theGood;
+ }
+
+ public Checked getTheBad() {
+ return theBad;
+ }
+
+ public UnChecked getTheUgly() {
+ return theUgly;
+ }
+
+ public ExceptionThrower getExceptionThrower() {
+ return exceptionThrower;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionThrowerImpl.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionThrowerImpl.java
new file mode 100644
index 0000000000..067615eed8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/java/org/apache/tuscany/sca/test/exceptions/impl/ExceptionThrowerImpl.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.exceptions.impl;
+
+import org.apache.tuscany.sca.test.exceptions.Checked;
+import org.apache.tuscany.sca.test.exceptions.ExceptionThrower;
+import org.apache.tuscany.sca.test.exceptions.UnChecked;
+
+/**
+ *
+ *
+ */
+public class ExceptionThrowerImpl implements ExceptionThrower {
+
+ public String theBad() throws Checked {
+
+ throw new Checked("theBad");
+
+ }
+
+ public String theGood() throws Checked {
+
+ return SO_THEY_SAY;
+ }
+
+ public String theUgly() throws Checked {
+
+ throw new UnChecked("theUgly");
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/ExceptionTest.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/ExceptionTest.composite
new file mode 100644
index 0000000000..a725864d30
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/ExceptionTest.composite
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/intracomposite.composite b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/intracomposite.composite
new file mode 100644
index 0000000000..efe1c5e207
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/main/resources/intracomposite.composite
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/exceptions/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.java
new file mode 100644
index 0000000000..4f719a26c4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/exceptions/src/test/java/org/apache/tuscany/sca/test/exceptions/IntraCompositeTestCase.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.exceptions;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+public class IntraCompositeTestCase extends TestCase {
+
+ private SCADomain domain;
+ private ExceptionHandler exceptionHandler;
+
+ public void testALL() {
+ exceptionHandler.testing();
+ assertEquals(ExceptionThrower.SO_THEY_SAY, exceptionHandler.getTheGood() );
+ assertNotNull(exceptionHandler.getTheBad());
+ assertEquals( Checked.class, exceptionHandler.getTheBad().getClass());
+ assertNotNull(exceptionHandler.getTheUgly());
+ assertEquals( UnChecked.class, exceptionHandler.getTheUgly().getClass());
+
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("ExceptionTest.composite");
+ exceptionHandler = domain.getService(ExceptionHandler.class, "main");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/pom.xml b/tags/java/sca/1.0.1-RC4/itest/extended-api/pom.xml
new file mode 100644
index 0000000000..fa1e24c976
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/pom.xml
@@ -0,0 +1,51 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-extended-api
+ Apache Tuscany SCA Extended API Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+
+ org.apache.tuscany.sca
+
+ tuscany-implementation-java-runtime
+
+ 1.0.1-incubating
+
+ runtime
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/BasicService.java b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/BasicService.java
new file mode 100644
index 0000000000..869565af17
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/BasicService.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.test.extended;
+
+public interface BasicService {
+
+ int negate(int theInt);
+ int delegateNegate(int theInt);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/MathService.java b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/MathService.java
new file mode 100644
index 0000000000..c54af93c05
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/MathService.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.test.extended;
+
+public interface MathService {
+
+ int negate(int theInt);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/BasicServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/BasicServiceImpl.java
new file mode 100644
index 0000000000..523d238f2e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/BasicServiceImpl.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.extended.impl;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.extended.BasicService;
+import org.apache.tuscany.sca.test.extended.MathService;
+import org.osoa.sca.ComponentContext;
+import org.osoa.sca.annotations.Context;
+import org.osoa.sca.annotations.Service;
+
+@Service(BasicService.class)
+public class BasicServiceImpl implements BasicService {
+
+ @Context
+ protected ComponentContext context;
+
+ public int negate(int theInt) {
+ return -theInt;
+ }
+
+ public int delegateNegate(int theInt) {
+ SCADomain domain = SCADomain.connect("sca://local");
+ MathService service = domain.getService(MathService.class, "MathServiceComponent");
+ return service.negate(theInt);
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/MathServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/MathServiceImpl.java
new file mode 100644
index 0000000000..ab4300a7dd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/java/org/apache/tuscany/sca/test/extended/impl/MathServiceImpl.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.extended.impl;
+
+import org.apache.tuscany.sca.test.extended.MathService;
+import org.osoa.sca.annotations.Service;
+
+@Service(MathService.class)
+public class MathServiceImpl implements MathService {
+
+ public int negate(int theInt) {
+ return -theInt;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/BasicService.composite b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/BasicService.composite
new file mode 100644
index 0000000000..128b33b16f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/BasicService.composite
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/MathService.composite b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/MathService.composite
new file mode 100644
index 0000000000..8e99d3da60
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/main/resources/MathService.composite
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/extended-api/src/test/java/org/apache/tuscany/sca/test/extended/ServiceLocateTestCase.java b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/test/java/org/apache/tuscany/sca/test/extended/ServiceLocateTestCase.java
new file mode 100644
index 0000000000..c480235d88
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/extended-api/src/test/java/org/apache/tuscany/sca/test/extended/ServiceLocateTestCase.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.extended;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osoa.sca.ServiceRuntimeException;
+
+public class ServiceLocateTestCase {
+
+ private SCADomain domain;
+
+ /**
+ * Test description: Locate a service using Domain.getService() from an
+ * unmanaged client and invoke a method on that service
+ */
+ @Test
+ public void unmanagedLocateService() {
+ BasicService service = domain.getService(BasicService.class, "BasicServiceComponent");
+ assertEquals(-99, service.negate(99));
+ }
+
+ /**
+ * Test description: Locate a service using Domain.getService() from an
+ * managed client. A service is located from this unmanaged test client and a method
+ * is invoked. The method implementation of the service will also use Domain.getService
+ */
+ @Test
+ public void managedLocateService() {
+ BasicService service = domain.getService(BasicService.class, "BasicServiceComponent");
+ assertEquals(-99, service.delegateNegate(99));
+ }
+
+ /**
+ * Test description: Attempt to locate a service with an invalid name.
+ */
+ @Test(expected = ServiceRuntimeException.class)
+ public void badComponentName() {
+ BasicService service = domain.getService(BasicService.class, "IvalidServiceName");
+ service.negate(-1);
+ }
+
+ @Before
+ public void init() throws Exception {
+ domain = SCADomain.newInstance("http://localhost", "/", "BasicService.composite", "MathService.composite");
+ }
+
+ @After
+ public void destroy() throws Exception {
+ domain.close();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/pom.xml b/tags/java/sca/1.0.1-RC4/itest/interfaces/pom.xml
new file mode 100644
index 0000000000..9e9aa4f0f7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/pom.xml
@@ -0,0 +1,46 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-interfaces
+ Apache Tuscany Interface Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalCallbackInterface.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalCallbackInterface.java
new file mode 100644
index 0000000000..5bc872ef83
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalCallbackInterface.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.interfaces;
+
+
+/**
+ * only for callBack
+ */
+public interface LocalCallbackInterface {
+
+ public void callbackMethod(String str);
+
+ public void modifyParameter(ParameterObject po);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponent.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponent.java
new file mode 100644
index 0000000000..7bfcf5de11
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponent.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.interfaces;
+
+import org.osoa.sca.annotations.OneWay;
+
+/*
+ * itest for interface: local,method-overloading
+ */
+public interface LocalClientComponent {
+
+ String foo1(ParameterObject po);
+
+ String foo1(String str) throws Exception;
+
+ String foo2(String str, int i);
+
+ String foo2(int i, String str) throws Exception;
+
+ void callback(String str);
+
+ void callModifyParameter();
+
+ @OneWay
+ void onewayMethod(String str);
+
+ String getCallbackValue();
+
+ String getOnewayValue();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponentImpl.java
new file mode 100644
index 0000000000..d4f7694e8f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalClientComponentImpl.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.interfaces;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(LocalClientComponent.class)
+public class LocalClientComponentImpl implements LocalClientComponent, LocalCallbackInterface {
+
+ @Reference
+ protected LocalServiceComponent aCallBackService;
+ private static String callbackValue;
+ private static String onewayValue;
+
+ public String foo1(ParameterObject po) {
+ po.field1 = "AComponent";
+ return "AComponent";
+ }
+
+ public String foo1(String str) throws Exception {
+ return str + "AComponent";
+ }
+
+ public String foo2(String str, int i) {
+ return str + "AComponent" + i;
+ }
+
+ public String foo2(int i, String str) throws Exception {
+ return str + "AComponent" + i;
+ }
+
+ public void callback(String str) {
+ aCallBackService.callback(str);
+ }
+
+ public void callbackMethod(String str) {
+ callbackValue = str;
+ }
+
+ public void callModifyParameter() {
+ this.aCallBackService.modifyParameter();
+ }
+
+ public String getCallbackValue() {
+ return callbackValue;
+ }
+
+ public void onewayMethod(String str) {
+ onewayValue = str;
+ try {
+ Thread.sleep(200);
+ } catch (Exception e) {
+ //do nothing
+ }
+ }
+
+ public String getOnewayValue() {
+ return onewayValue;
+ }
+
+ public void modifyParameter(ParameterObject po) {
+ po.field1 = "AComponent";
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponent.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponent.java
new file mode 100644
index 0000000000..6a04376168
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponent.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.itest.interfaces;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * Remote be-directional callBackService
+ */
+@Remotable
+@Callback(LocalCallbackInterface.class)
+public interface LocalServiceComponent {
+
+ String foo(String str);
+
+ void callback(String str);
+
+ void modifyParameter();
+
+ ParameterObject getPO();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponentImpl.java
new file mode 100644
index 0000000000..e100636b23
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/LocalServiceComponentImpl.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.interfaces;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Service;
+
+@Service(LocalServiceComponent.class)
+public class LocalServiceComponentImpl implements LocalServiceComponent {
+
+ @Callback
+ protected LocalCallbackInterface callback;
+
+ private static ParameterObject po;
+
+ public void callback(String str) {
+ callback.callbackMethod(str);
+ }
+
+ public void modifyParameter() {
+ po = new ParameterObject("CallBack");
+ callback.modifyParameter(po);
+ }
+
+ public String foo(String str) {
+ return str;
+ }
+
+ public ParameterObject getPO() {
+ return po;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/ParameterObject.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/ParameterObject.java
new file mode 100644
index 0000000000..0bc8d10904
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/ParameterObject.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.interfaces;
+
+import java.io.Serializable;
+
+public class ParameterObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+ public String field1;
+
+ public ParameterObject() {
+ this.field1 = null;
+ }
+
+ public ParameterObject(String field1) {
+ this.field1 = field1;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == this)
+ return true;
+ if (o instanceof ParameterObject) {
+ ParameterObject other = (ParameterObject)o;
+ if (field1 != null)
+ return field1.equals(other.field1);
+ }
+ return false;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteCallbackInterface.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteCallbackInterface.java
new file mode 100644
index 0000000000..e2b70313ed
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteCallbackInterface.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.itest.interfaces;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * only for callBack
+ */
+@Remotable
+public interface RemoteCallbackInterface {
+
+ public void callbackMethod(String str);
+
+ public void modifyParameter(ParameterObject po);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponent.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponent.java
new file mode 100644
index 0000000000..87690c0385
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponent.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.
+ */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.interfaces;
+
+import org.osoa.sca.annotations.Remotable;
+
+/*
+ * different signatures
+ */
+
+@Remotable
+public interface RemoteClientComponent {
+
+ String foo1(ParameterObject po);
+
+ String foo2(int i, String str1) throws Exception;
+
+ void callback(String str);
+
+ void callModifyParameter();
+
+ String getCallbackValue();
+
+ void onewayMethod(String str);
+
+ String getOnewayValue();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponentImpl.java
new file mode 100644
index 0000000000..87151b3bcd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteClientComponentImpl.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 org.apache.tuscany.sca.itest.interfaces;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(RemoteClientComponent.class)
+public class RemoteClientComponentImpl implements RemoteClientComponent, RemoteCallbackInterface {
+
+ @Reference
+ protected RemoteServiceComponent aCallBackService;
+ private static String callbackValue;
+ private static String onewayValue;
+
+ public String foo1(ParameterObject po) {
+ po.field1 = "BComponent";
+ return "BComponent";
+ }
+
+ public String foo2(int i, String str) throws Exception {
+ return str + "BComponent" + i;
+ }
+
+ public void callback(String str) {
+ aCallBackService.callback(str);
+ }
+
+ public void callModifyParameter() {
+ this.aCallBackService.modifyParameter();
+ }
+
+ public void callbackMethod(String str) {
+ callbackValue = str;
+ }
+
+ public String getCallbackValue() {
+ return callbackValue;
+ }
+
+ public void onewayMethod(String str) {
+ onewayValue = str;
+ try {
+ Thread.sleep(200);
+ } catch (Exception e) {
+ //do nothing
+ }
+ }
+
+ public String getOnewayValue() {
+ return onewayValue;
+ }
+
+ public void modifyParameter(ParameterObject po) {
+ po.field1 = "BComponent";
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.java
new file mode 100644
index 0000000000..c33a06caac
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponent.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.interfaces;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+@Callback(RemoteCallbackInterface.class)
+public interface RemoteServiceComponent {
+
+ String foo(String str);
+
+ void callback(String str);
+
+ void modifyParameter();
+
+ ParameterObject getPO();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.java
new file mode 100644
index 0000000000..d3d3e22c2f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/java/org/apache/tuscany/sca/itest/interfaces/RemoteServiceComponentImpl.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.interfaces;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Service;
+
+@Service(RemoteServiceComponent.class)
+public class RemoteServiceComponentImpl implements RemoteServiceComponent {
+
+ @Callback
+ protected RemoteCallbackInterface callback;
+
+ private static ParameterObject po;
+
+ public void callback(String str) {
+ callback.callbackMethod(str);
+ }
+
+ public void modifyParameter() {
+ po = new ParameterObject("CallBack");
+ callback.modifyParameter(po);
+ }
+
+ public String foo(String str) {
+ return str;
+ }
+
+ public ParameterObject getPO() {
+ return po;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/resources/InterfacesTest.composite b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/resources/InterfacesTest.composite
new file mode 100644
index 0000000000..0361d8c83c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/main/resources/InterfacesTest.composite
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/interfaces/src/test/java/org/apache/tuscany/sca/itest/interfaces/InterfacesTestCase.java b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/test/java/org/apache/tuscany/sca/itest/interfaces/InterfacesTestCase.java
new file mode 100644
index 0000000000..db23b223c4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interfaces/src/test/java/org/apache/tuscany/sca/itest/interfaces/InterfacesTestCase.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 org.apache.tuscany.sca.itest.interfaces;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class InterfacesTestCase {
+ private static SCADomain domain;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ domain = SCADomain.newInstance("InterfacesTest.composite");
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ domain.close();
+ }
+
+ @Test
+ public void testLocalClient() {
+ LocalServiceComponent service = domain.getService(LocalServiceComponent.class, "LocalServiceComponent");
+ LocalClientComponent local = domain.getService(LocalClientComponent.class, "LocalClientComponent");
+
+ try {
+ ParameterObject po = new ParameterObject();
+ assertEquals("AComponent", local.foo1(po));
+ assertEquals("AComponent", po.field1);
+
+ assertEquals("AAComponent", local.foo1("A"));
+
+ assertEquals("AAComponent1", local.foo2("A", 1));
+ assertEquals("AAComponent1", local.foo2(1, "A"));
+ } catch (Exception e) {
+ fail();
+ }
+
+ try {
+ // test local callback
+ local.callback("CallBack");
+ Thread.sleep(100);
+ assertEquals("CallBack", local.getCallbackValue());
+
+ local.callModifyParameter();
+ Thread.sleep(100);
+ assertEquals("AComponent", service.getPO().field1);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("CallBack failed");
+ }
+
+ try {
+ local.onewayMethod("OneWay");
+ Thread.sleep(100);
+ assertEquals("OneWay", local.getOnewayValue());
+ } catch (Exception e) {
+ fail("OneWay failed");
+ }
+ }
+
+ @Test
+ public void testRemoteClient() {
+ RemoteServiceComponent service = domain.getService(RemoteServiceComponent.class, "RemoteServiceComponent");
+ RemoteClientComponent remote = domain.getService(RemoteClientComponent.class, "RemoteClientComponent");
+
+ try {
+ ParameterObject po = new ParameterObject("NotBComponent");
+ assertEquals("BComponent", remote.foo1(po));
+ assertEquals("NotBComponent", po.field1);
+
+ assertEquals("BBComponent1", remote.foo2(1, "B"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+
+ try {
+ remote.callback("CallBack");
+ Thread.sleep(100);
+ assertEquals("CallBack", remote.getCallbackValue());
+
+ remote.callModifyParameter();
+ Thread.sleep(100);
+ assertEquals("CallBack", service.getPO().field1);
+ } catch (Exception e) {
+ fail("CallBack failed");
+ }
+
+ try {
+ remote.onewayMethod("OneWay");
+ Thread.sleep(100);
+ assertEquals("OneWay", remote.getOnewayValue());
+ } catch (Exception e) {
+ fail("OneWay failed");
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/pom.xml b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/pom.xml
new file mode 100644
index 0000000000..2f7d247967
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/pom.xml
@@ -0,0 +1,126 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-interop-soap-client
+ jar
+ Apache Tuscany SCA WS Interop Client Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.0.1-incubating
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-wsdl
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-impl
+ 1.0-incubating
+ compile
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl/interopdoc.wsdl
+ true
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-maven-wsdl2java
+ 1.0.1-incubating
+
+
+
+
+ ${basedir}/src/main/resources/wsdl/interopdoc.wsdl
+ org.soapinterop
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/java/org/apache/tuscany/test/interop/client/LoopbackInteropDocServiceComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/java/org/apache/tuscany/test/interop/client/LoopbackInteropDocServiceComponentImpl.java
new file mode 100644
index 0000000000..ffffb96686
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/java/org/apache/tuscany/test/interop/client/LoopbackInteropDocServiceComponentImpl.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.test.interop.client;
+
+import java.rmi.RemoteException;
+
+import org.osoa.sca.annotations.Service;
+import org.soapinterop.ComplexDocument;
+import org.soapinterop.DocTestPortType;
+import org.soapinterop.SimpleDocument1;
+import org.soapinterop.SingleTag;
+
+/**
+ * This class implements the DocTest service component.
+ */
+@Service(DocTestPortType.class)
+public class LoopbackInteropDocServiceComponentImpl implements DocTestPortType {
+
+ public ComplexDocument ComplexDocument(ComplexDocument param0){
+ return param0;
+ }
+
+ public SimpleDocument1 SimpleDocument(SimpleDocument1 param4) {
+ return param4;
+ }
+
+ public SingleTag SingleTag(SingleTag param2) {
+ return param2;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/default.composite b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/default.composite
new file mode 100644
index 0000000000..7fd5cc0d65
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/default.composite
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/wsdl/interopdoc.wsdl b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/wsdl/interopdoc.wsdl
new file mode 100644
index 0000000000..90d8a754b4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/main/resources/wsdl/interopdoc.wsdl
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/test/java/org/apache/tuscany/test/interop/client/InteropDocClientTestCase.java b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/test/java/org/apache/tuscany/test/interop/client/InteropDocClientTestCase.java
new file mode 100644
index 0000000000..dc1ba48580
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-client/src/test/java/org/apache/tuscany/test/interop/client/InteropDocClientTestCase.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.interop.client;
+
+import java.rmi.RemoteException;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.soapinterop.ArrayOfSimpleDocument;
+import org.soapinterop.ChildDocument;
+import org.soapinterop.ComplexDocument;
+import org.soapinterop.DocTestPortType;
+import org.soapinterop.SimpleDocument;
+import org.soapinterop.SimpleDocument1;
+import org.soapinterop.SingleTag;
+
+import commonj.sdo.helper.DataFactory;
+
+public class InteropDocClientTestCase extends TestCase {
+ private SCADomain scaDomain;
+
+ private DataFactory dataFactory;
+
+ private DocTestPortType interopDoc;
+
+ public InteropDocClientTestCase(){};
+
+
+ @Override
+ protected void setUp() throws Exception {
+
+ scaDomain = SCADomain.newInstance("default.composite");
+ interopDoc = locateInteropDocService();
+
+ //Get the SDO DataFactory
+ dataFactory = DataFactory.INSTANCE;
+ }
+
+
+ public void testSingleTag() throws RemoteException {
+
+ assertNotNull(interopDoc);
+
+ // Create the input
+ SingleTag input = (SingleTag) dataFactory.create(SingleTag.class);
+
+ // Invoke the service
+ SingleTag output = interopDoc.SingleTag(input);
+
+ // Test the results
+ assertNotNull(output);
+
+ }
+
+ public void testSimpleDocument() throws RemoteException {
+
+ assertNotNull(interopDoc);
+
+ // Create the input
+ SimpleDocument1 input = (SimpleDocument1) dataFactory.create(SimpleDocument1.class);
+ input.setValue("123");
+
+ // Invoke the service
+ SimpleDocument1 output = interopDoc.SimpleDocument(input);
+
+ // Test the results
+ assertNotNull(output);
+ assertEquals("123", output.getValue());
+
+ }
+
+ public void testComplexDocument() throws RemoteException {
+
+ assertNotNull(interopDoc);
+
+ // Create the input
+ ComplexDocument input = (ComplexDocument) dataFactory.create(ComplexDocument.class);
+ input.setAnAttribute("789");
+ ChildDocument childDocument = (ChildDocument) dataFactory.create(ChildDocument.class);
+ SimpleDocument simpleDocument = (SimpleDocument) dataFactory.create(SimpleDocument.class);
+
+ SimpleDocument1 simpleDocument1 = (SimpleDocument1) dataFactory.create(SimpleDocument1.class);
+
+ simpleDocument.setSimpleDocument(simpleDocument1);
+ simpleDocument1.setValue("456");
+ ArrayOfSimpleDocument arrayOfSimpleDocument = (ArrayOfSimpleDocument) dataFactory.create(ArrayOfSimpleDocument.class);
+
+ arrayOfSimpleDocument.getSimpleDocument().add(simpleDocument1);
+ childDocument.setChildSimpleDoc(arrayOfSimpleDocument);
+ input.setChild(childDocument);
+
+ // Invoke the service
+ ComplexDocument output = interopDoc.ComplexDocument(input);
+
+ // Test the results
+ assertNotNull(output);
+ assertEquals("789", output.getAnAttribute());
+ assertNotNull(output.getChild());
+ assertNotNull(output.getChild().getChildSimpleDoc());
+
+ // FIXME Add more tests of the output document
+
+ }
+
+
+ /**
+ * Locate the interop service to test
+ *
+ * @return
+ */
+ protected DocTestPortType locateInteropDocService() {
+ String interopLocation = System.getProperty("interopLocation");
+
+ // Valid service names are:
+ // RemoteInteropDocService: the live interop Web Service
+ // LocalHostInteropDocService: the interop Web Service hosted by Tuscany on localhost
+ // LoopbackInteropDocServiceComponent: a dummy loopback service component
+
+ // To specify the service name run mvn -interopLocation="Remote"
+
+ if (interopLocation == null)
+ interopLocation = "Remote";
+
+ return scaDomain.getService(DocTestPortType.class, interopLocation + "InteropDocService");
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/pom.xml b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/pom.xml
new file mode 100644
index 0000000000..8ef8dda0c7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/pom.xml
@@ -0,0 +1,124 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-interop-soap-round2-client
+ Apache Tuscany SCA WS SOAP Round2 Interop Client Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-sca-api
+ 1.0.1-incubating
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-interface-wsdl
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-axiom
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ runtime
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-impl
+ 1.0-incubating
+ compile
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl/interoptestdoclit.wsdl
+ true
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-maven-wsdl2java
+ 1.0.1-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl/interoptestdoclit.wsdl
+ org.soapinterop.wsdl.interop.test.doc.lit
+
+
+ generate
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/java/org/apache/tuscany/test/interop/client/InteropTestDocLit.java b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/java/org/apache/tuscany/test/interop/client/InteropTestDocLit.java
new file mode 100644
index 0000000000..ca3031c646
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/java/org/apache/tuscany/test/interop/client/InteropTestDocLit.java
@@ -0,0 +1,44 @@
+package org.apache.tuscany.test.interop.client;
+import org.soapinterop.wsdl.interop.test.doc.lit.WSDLInteropTestDocLitPortType;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+/**
+ *
+ *
+ */
+public class InteropTestDocLit {
+ private WSDLInteropTestDocLitPortType interopTestDocLitPortType =null;
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+
+
+ }
+ WSDLInteropTestDocLitPortType getInteropTestDocLitPortType() {
+ return interopTestDocLitPortType;
+ }
+ void setInteropTestDocLitPortType(WSDLInteropTestDocLitPortType interopTestDocLitPortType) {
+ this.interopTestDocLitPortType = interopTestDocLitPortType;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/default.composite b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/default.composite
new file mode 100644
index 0000000000..9bde77ef37
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/default.composite
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/wsdl/interoptestdoclit.wsdl b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/wsdl/interoptestdoclit.wsdl
new file mode 100644
index 0000000000..e08039cedb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/main/resources/wsdl/interoptestdoclit.wsdl
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/test/java/org/apache/tuscany/test/interop/client/InteropTestDocLitTestCase.java b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/test/java/org/apache/tuscany/test/interop/client/InteropTestDocLitTestCase.java
new file mode 100644
index 0000000000..bb379c89cd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-round2-client/src/test/java/org/apache/tuscany/test/interop/client/InteropTestDocLitTestCase.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.interop.client;
+
+import java.rmi.RemoteException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.tuscany.test.SCATestCase;
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+import org.soapinterop.wsdl.interop.test.doc.lit.WSDLInteropTestDocLitPortType;
+import org.soapinterop.xsd.ArrayOfstring_literal;
+import org.soapinterop.xsd.SOAPStruct;
+import org.soapinterop.xsd.XsdPackage;
+
+import commonj.sdo.helper.DataFactory;
+
+/**
+ * This test case is part of the tuscany interop tests. This is a reduced version of the SOAPBuilders InteropTest test, document/literal mode. This
+ * version has operations such as echoString, echoArrayOfString and echoStruct.
+ *
+ *
+ * The WSDL for the external service used in this test case can be downloaded from http://www.mssoapinterop.org/stkV3/wsdl/InteropTestDocLit.wsdl.
+ * This is part of the WSDL interop test from Microsoft and more details aobout this test case are found at
+ * http://www.mssoapinterop.org/stkV3/wsdl/WSDLInterop-0118.htm
+ */
+public class InteropTestDocLitTestCase extends TestCase {
+
+ private WSDLInteropTestDocLitPortType doc = null;
+
+ private DataFactory dataFactory;
+
+
+ protected void setUp() throws Exception {
+ setApplicationSCDL(InteropTestDocLit.class, "META-INF/sca/default.scdl");
+ addExtension("test.extensions", InteropTestDocLit.class.getClassLoader().getResource("META-INF/tuscany/extensions/test-extensions.scdl"));
+
+ super.setUp();
+
+ // Get the SDO DataFactory
+ dataFactory = DataFactory.INSTANCE;
+
+ // Locate the service to test
+ doc = locateInteropDocService();
+ }
+
+ /**
+ * Locate the interop service to test
+ *
+ * @return
+ */
+ protected WSDLInteropTestDocLitPortType locateInteropDocService() {
+
+ CompositeContext compositeContext = CurrentCompositeContext.getContext();
+ return compositeContext.locateService(WSDLInteropTestDocLitPortType.class, "RemoteInteropDocService");
+
+ }
+
+ /**
+ * test echo void
+ *
+ * @throws RemoteException
+ */
+ public void testEchoVoid() throws RemoteException {
+ doc.echoVoid();
+ assertTrue(true);
+ }
+
+ /**
+ * test echo string
+ *
+ * @throws RemoteException
+ */
+ public void testEchoString() throws RemoteException {
+ String input = "a test string";
+ String output = doc.echoString(input);
+ assertEquals(input, output);
+ }
+
+ /**
+ * test echo string
+ *
+ * @throws RemoteException
+ */
+ public void testEchoStringArray() throws RemoteException {
+
+ ArrayOfstring_literal input = (ArrayOfstring_literal) dataFactory.create(ArrayOfstring_literal.class);
+ List inStrings = Arrays.asList(new String[] { "petra", "sue" });
+ input.set(XsdPackage.ARRAY_OFSTRING_LITERAL__STRING, inStrings);
+
+ ArrayOfstring_literal output = doc.echoStringArray(input);
+
+ List outStrings = output.getString();
+ assertNotNull(outStrings);
+ assertEquals(2, outStrings.size());
+ assertEquals("petra", outStrings.get(0));
+ assertEquals("sue", outStrings.get(1));
+ }
+
+ /**
+ * test echo struct
+ *
+ * @throws RemoteException
+ */
+ public void testEchoStruct() throws RemoteException {
+ SOAPStruct input = (SOAPStruct) dataFactory.create(SOAPStruct.class);
+ input.setVarInt(200);
+ input.setVarFloat(.002f);
+ input.setVarString("Hello");
+ SOAPStruct output = doc.echoStruct(input);
+ assertEquals(input.getVarInt(), output.getVarInt());
+ assertEquals(input.getVarFloat(), output.getVarFloat());
+ assertEquals(input.getVarString(), output.getVarString());
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/pom.xml b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/pom.xml
new file mode 100644
index 0000000000..f421ad6061
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/pom.xml
@@ -0,0 +1,137 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+
+ itest-interop-soap-service
+ war
+ Apache Tuscany SCA WS Interop Service Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+
+ org.apache.ws.commons.axiom
+ axiom-api
+
+
+ xerces
+ xercesImpl
+
+
+ 1.2.5
+
+
+
+ xerces
+ xercesImpl
+ 2.8.1
+ runtime
+
+
+
+ org.apache.ws.commons.axiom
+ axiom-impl
+ 1.2.5
+ runtime
+
+
+
+ org.codehaus.woodstox
+ wstx-asl
+ 3.2.1
+ runtime
+
+
+
+
+
+
+
+ org.apache.tuscany.sdo
+ tuscany-sdo-plugin
+ 1.0-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl/interopdoc.wsdl
+ true
+ true
+ true
+ true
+
+
+ generate
+
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-maven-wsdl2java
+ 1.0.1-incubating
+
+
+
+ ${basedir}/src/main/resources/wsdl/interopdoc.wsdl
+ org.soapinterop
+
+
+ generate
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/java/org/apache/tuscany/test/interop/server/InteropDocServiceComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/java/org/apache/tuscany/test/interop/server/InteropDocServiceComponentImpl.java
new file mode 100644
index 0000000000..c34941f43e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/java/org/apache/tuscany/test/interop/server/InteropDocServiceComponentImpl.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.test.interop.server;
+
+import java.rmi.RemoteException;
+
+import org.osoa.sca.annotations.Service;
+import org.soapinterop.ComplexDocument;
+import org.soapinterop.DocTestPortType;
+import org.soapinterop.SimpleDocument1;
+import org.soapinterop.SingleTag;
+
+/**
+ * This class implements the HelloWorld service component.
+ */
+@Service(DocTestPortType.class)
+public class InteropDocServiceComponentImpl implements DocTestPortType {
+
+ public ComplexDocument ComplexDocument(ComplexDocument param2) throws RemoteException {
+ return param2;
+ }
+
+ public SimpleDocument1 SimpleDocument(SimpleDocument1 param0) throws RemoteException {
+ return param0;
+ }
+
+ public SingleTag SingleTag(SingleTag param4) throws RemoteException {
+ return param4;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/resources/wsdl/interopdoc.wsdl b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/resources/wsdl/interopdoc.wsdl
new file mode 100644
index 0000000000..820c26ca34
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/resources/wsdl/interopdoc.wsdl
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/META-INF/sca/default.scdl b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/META-INF/sca/default.scdl
new file mode 100644
index 0000000000..3fbc73616e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/META-INF/sca/default.scdl
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InteropDocServiceComponent/DocTestPortType
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/WEB-INF/web.xml b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..8cf95fb789
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+ Tuscany Interop Test Server
+
+
+ systemScdlPath
+ /META-INF/sca/webapp.system.scdl
+
+
+
+ applicationScdlPath
+ /META-INF/sca/default.scdl
+
+
+
+ org.apache.tuscany.runtime.webapp.TuscanyContextListener
+
+
+
+ TuscanyServlet
+ Tuscany Servlet
+ org.apache.tuscany.runtime.webapp.TuscanyServlet
+
+
+
+ TuscanyServlet
+ /services/*
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/t.bat b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/t.bat
new file mode 100755
index 0000000000..0f83dedc37
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/interop-soap-service/t.bat
@@ -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.
+
+
+@echo off
+pushd target
+jar -xf ..\apache-tomcat-5.5.17.zip
+popd
+copy target\sample-helloworldws-1.0-SNAPSHOT.war target\apache-tomcat-5.5.17\webapps
+rem pushd target\apache-tomcat-5.5.17\webapps
+rem md sample-helloworldws-1.0-SNAPSHOT
+rem cd sample-helloworldws-1.0-SNAPSHOT
+rem jar -xf ..\sample-helloworldws-1.0-SNAPSHOT.war
+pushd target\apache-tomcat-5.5.17\shared
+rem jar -xf "%USERPROFILE%\.m2\repository\org\apache\tuscany\web\1.0-SNAPSHOT\web-1.0-SNAPSHOT-bin.zip"
+jar -xf "%USERPROFILE%\.m2\repository\org\apache\tuscany\web\1.0-SNAPSHOT\web-1.0-SNAPSHOT-bin.zip"
+popd
+rem hack
+mkdir target\apache-tomcat-5.5.17\shared\extension
+copy target\apache-tomcat-5.5.17\shared\lib\axis2-1.0-SNAPSHOT.jar target\apache-tomcat-5.5.17\shared\extension
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/pom.xml b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/pom.xml
new file mode 100644
index 0000000000..350076e4ea
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/pom.xml
@@ -0,0 +1,130 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-large-sdo-ws
+ jar
+ Apache Tuscany SCA Web Service with Large SDO Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-databinding-sdo
+ 1.0.1-incubating
+ compile
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-tomcat
+ 1.0.1-incubating
+ runtime
+
+
+
+ javax.servlet
+ servlet-api
+ 2.4
+ test
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
+
+ ${artifactId}
+
+
+ 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.0-incubating
+
+
+ generate-ifx-sdo
+ generate-sources
+
+
+
+ ${basedir}/src/main/resources/wsdl/IFX170_XSD.xsd
+ true
+
+
+
+
+ generate
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqClient.java b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqClient.java
new file mode 100644
index 0000000000..f5a8830c4a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqClient.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.trninq;
+
+import java.rmi.RemoteException;
+
+import org.ifxforum.xsd._1.DepAcctTrnInqRq_Type;
+import org.ifxforum.xsd._1.DepAcctTrnInqRs_Type;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TrnInqClient implements TrninqInterface {
+
+ //service interface
+ private TrninqInterface transactionInquiryService;
+
+ // setting service interface
+ public void setTransactionInquiryService(TrninqInterface transactionInquiryService) {
+ this.transactionInquiryService = transactionInquiryService;
+ }
+
+ public DepAcctTrnInqRs_Type DepAcctTrnInq(DepAcctTrnInqRq_Type req) throws RemoteException {
+ return transactionInquiryService.DepAcctTrnInq(req);
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqService.java b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqService.java
new file mode 100644
index 0000000000..14da53cf98
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrnInqService.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.itest.trninq;
+
+import java.rmi.RemoteException;
+import java.util.List;
+
+import org.ifxforum.xsd._1.AdditionalStatus_Type;
+import org.ifxforum.xsd._1.BankAcctTrnRec_Type;
+import org.ifxforum.xsd._1.BillerId_Type;
+import org.ifxforum.xsd._1.BillerPayee_Type;
+import org.ifxforum.xsd._1.DepAcctTrnInqRq_Type;
+import org.ifxforum.xsd._1.DepAcctTrnInqRs_Type;
+import org.ifxforum.xsd._1.DepAcctTrnRec_Type;
+import org.ifxforum.xsd._1._1Factory;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TrnInqService implements TrninqInterface {
+
+ public DepAcctTrnInqRs_Type DepAcctTrnInq(DepAcctTrnInqRq_Type req) throws RemoteException {
+
+ DepAcctTrnInqRs_Type response = _1Factory.INSTANCE.createDepAcctTrnInqRs_Type();
+
+ response.setStatus(_1Factory.INSTANCE.createStatus_Type());
+ response.getStatus().setStatusCode(1);
+ response.getStatus().setStatusDesc("the description associated with the code 1");
+ AdditionalStatus_Type addStatus = _1Factory.INSTANCE.createAdditionalStatus_Type();
+ addStatus.setServerStatusCode("STATUS_OK");
+ addStatus.setSeverity("SEVERITY_WARNING");
+ response.getStatus().getAdditionalStatus().add(addStatus);
+
+ response.setDepAcctId(_1Factory.INSTANCE.createDepAcctId_Type());
+ response.getDepAcctId().setBankInfo(_1Factory.INSTANCE.createBankInfo_Type());
+ response.getDepAcctId().getBankInfo().setBranchId("Concord_1");
+ response.getDepAcctId().getBankInfo().setBankId("Dufferin hill");
+ response.getDepAcctId().getBankInfo().setBankIdType("Concord branch");
+ response.getDepAcctId().getBankInfo().setBranchName("A Happy branch");
+ response.getDepAcctId().getBankInfo().setCity("Toronto");
+
+ response.getDepAcctId().getBankInfo().setCountry("Canada");
+ response.getDepAcctId().getBankInfo().setName("Info for A Happy branch");
+ response.getDepAcctId().getBankInfo().setPostalCode("L1LL1L");
+ response.getDepAcctId().getBankInfo().setStateProv("ON");
+
+ List records = response.getDepAcctTrnRec();
+ // Record1
+ DepAcctTrnRec_Type trnRec1 = null;
+ BankAcctTrnRec_Type baTrnRec1 = null;
+ long maxRec = req.getTrnCountLimit().getCount();
+ for (int i = 0; i < maxRec; i++) {
+ trnRec1 = _1Factory.INSTANCE.createDepAcctTrnRec_Type();
+ baTrnRec1 = _1Factory.INSTANCE.createBankAcctTrnRec_Type();
+
+ trnRec1.setBankAcctTrnRec(baTrnRec1);
+ trnRec1.getBankAcctTrnRec().setCSPRefId("CSPRefId1");
+ trnRec1.getBankAcctTrnRec().setPostedDt("1");
+ trnRec1.getBankAcctTrnRec().setOrigDt("1");
+ trnRec1.getBankAcctTrnRec().setBillRefInfo("aaaa");
+
+ trnRec1.getBankAcctTrnRec().setTrnType("1");
+
+ trnRec1.getBankAcctTrnRec().setCurAmt(_1Factory.INSTANCE.createCurrencyAmount());
+ trnRec1.getBankAcctTrnRec().getCurAmt().setAmt(new java.math.BigDecimal(2000.35));
+ trnRec1.getBankAcctTrnRec().getCurAmt().setCurCode("100");
+
+ trnRec1.setStmtRunningBal(_1Factory.INSTANCE.createCurrencyAmount());
+ trnRec1.getStmtRunningBal().setAmt(new java.math.BigDecimal("1345.55"));
+
+ trnRec1.getBankAcctTrnRec().setCustPayeeInfo(_1Factory.INSTANCE.createCustPayeeInfo_Type());
+ trnRec1.getBankAcctTrnRec().getCustPayeeInfo().setBillingAcct("000601832");
+ trnRec1.getBankAcctTrnRec().getCustPayeeInfo().setAcctPayAcctId("12");
+ trnRec1.getBankAcctTrnRec().getCustPayeeInfo().setName("John Doe");
+ trnRec1.getBankAcctTrnRec().getCustPayeeInfo().setNickname("Jody");
+
+ trnRec1.getBankAcctTrnRec().getCustPayeeInfo().setBillerPayee(_1Factory.INSTANCE.createBillerPayee_Type());
+ BillerPayee_Type BillerP = trnRec1.getBankAcctTrnRec().getCustPayeeInfo().getBillerPayee();
+
+ BillerP.setBillerId(_1Factory.INSTANCE.createBillerId_Type());
+ BillerId_Type BId = BillerP.getBillerId();
+
+ BId.setBillerNum("123");
+ BId.setSPName("SomeName");
+
+ trnRec1.setAvailDt("sss");
+ trnRec1.setPmtId("SomeID");
+ trnRec1.setXferId("SomeOtherID");
+
+ records.add(trnRec1);
+ }
+
+ return response;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrninqInterface.java b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrninqInterface.java
new file mode 100644
index 0000000000..3575d94f48
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/java/org/apache/tuscany/sca/itest/trninq/TrninqInterface.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.trninq;
+
+import org.ifxforum.xsd._1.DepAcctTrnInqRq_Type;
+import org.ifxforum.xsd._1.DepAcctTrnInqRs_Type;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface TrninqInterface {
+
+ /**
+ * Auto generated method signatures
+ * @param depAcctTrnInqRq
+ */
+ public DepAcctTrnInqRs_Type DepAcctTrnInq(DepAcctTrnInqRq_Type depAcctTrnInqRq) throws java.rmi.RemoteException;
+
+ //
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/trnInq.composite b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/trnInq.composite
new file mode 100644
index 0000000000..02c262fe0a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/trnInq.composite
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/IFX170_XSD.xsd b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/IFX170_XSD.xsd
new file mode 100644
index 0000000000..b85b80abc4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/IFX170_XSD.xsd
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/trninq.wsdl b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/trninq.wsdl
new file mode 100644
index 0000000000..12764c2142
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/main/resources/wsdl/trninq.wsdl
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/test/java/trninq/TrnInqServiceTestCase.java b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/test/java/trninq/TrnInqServiceTestCase.java
new file mode 100644
index 0000000000..9c86d429a3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/large-sdo-ws/src/test/java/trninq/TrnInqServiceTestCase.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 trninq;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.trninq.TrninqInterface;
+import org.ifxforum.xsd._1.DepAcctTrnInqRq_Type;
+import org.ifxforum.xsd._1.DepAcctTrnInqRs_Type;
+import org.ifxforum.xsd._1.TrnCountLimit_Type;
+import org.ifxforum.xsd._1._1Factory;
+import org.junit.Assert;
+
+/**
+ * This test is created to cover https://issues.apache.org/jira/browse/TUSCANY-1541
+ *
+ * @version $Rev$ $Date$
+ */
+public class TrnInqServiceTestCase extends TestCase {
+
+ private SCADomain scaDomain;
+ private TrninqInterface trnInq;
+
+ @Override
+ protected void setUp() throws Exception {
+ scaDomain = SCADomain.newInstance("trnInq.composite");
+ trnInq = scaDomain.getService(TrninqInterface.class, "TransactionInquiryClientComponent");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ scaDomain.close();
+ }
+
+ public void testDepAcctTrnInq() throws IOException {
+ DepAcctTrnInqRq_Type depAcctTrnInqRequest = _1Factory.INSTANCE.createDepAcctTrnInqRq_Type();
+ TrnCountLimit_Type trnCountLimit = _1Factory.INSTANCE.createTrnCountLimit_Type();
+ depAcctTrnInqRequest.setTrnCountLimit(trnCountLimit);
+ depAcctTrnInqRequest.getTrnCountLimit().setCount(2);
+
+ try {
+ DepAcctTrnInqRs_Type depAcctTrnInqResponse = trnInq.DepAcctTrnInq(depAcctTrnInqRequest);
+ } catch (Exception e) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ Assert.fail("Should pass with MaxRec 2! \n" + sw);
+ sw.close();
+ pw.close();
+ }
+
+ depAcctTrnInqRequest.getTrnCountLimit().setCount(10);
+ try {
+ DepAcctTrnInqRs_Type depAcctTrnInqResponse = trnInq.DepAcctTrnInq(depAcctTrnInqRequest);
+ } catch (Exception e) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+ Assert.fail("Should pass with MaxRec 10! \n" + sw);
+ sw.close();
+ pw.close();
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/build.xml b/tags/java/sca/1.0.1-RC4/itest/oneway/build.xml
new file mode 100644
index 0000000000..37bcd09f14
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/build.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/pom.xml b/tags/java/sca/1.0.1-RC4/itest/oneway/pom.xml
new file mode 100644
index 0000000000..f167ae83ab
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/pom.xml
@@ -0,0 +1,57 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-oneway
+ Apache Tuscany SCA OneWay Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayClient.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayClient.java
new file mode 100644
index 0000000000..afa008bd3e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayClient.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.oneway;
+
+
+/**
+ * The client for the oneway itest
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+
+public interface OneWayClient {
+
+ public int doSomething(int count);
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayService.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayService.java
new file mode 100644
index 0000000000..b389927403
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/OneWayService.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.itest.oneway;
+
+
+import org.osoa.sca.annotations.OneWay;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The service interface used when testing oneway interactions
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+@Remotable
+public interface OneWayService {
+
+ @OneWay
+ public void doSomething(int count);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayClientImpl.java
new file mode 100644
index 0000000000..b3896a1732
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayClientImpl.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.itest.oneway.impl;
+
+import org.apache.tuscany.sca.itest.oneway.OneWayClient;
+import org.apache.tuscany.sca.itest.oneway.OneWayService;
+import org.osoa.sca.annotations.Reference;
+
+
+/**
+ * The client for the oneway itest
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+
+public class OneWayClientImpl implements OneWayClient {
+
+ @Reference
+ protected OneWayService oneWayService;
+
+
+ public int doSomething(int count){
+
+ int start = count * 10;
+ int end = start + 100;
+
+ for (int loopCount = start; loopCount < end; loopCount++){
+ System.out.println("Client: doSomething " + loopCount);
+ System.out.flush();
+ oneWayService.doSomething(loopCount);
+ }
+
+ return count;
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServer.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServer.java
new file mode 100644
index 0000000000..405fa5c3fd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServer.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.oneway.impl;
+
+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 oneway Web service endpoint.
+ */
+public class OneWayServer {
+
+ public static void main(String[] args) {
+
+ SCADomain scaDomain = SCADomain.newInstance("oneWay.composite");
+
+ try {
+ System.out.println("OneWay server started (press enter to shutdown)");
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ scaDomain.close();
+ System.out.println("OneWay server stopped");
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServiceImpl.java
new file mode 100644
index 0000000000..c78874bbf6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/java/org/apache/tuscany/sca/itest/oneway/impl/OneWayServiceImpl.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.itest.oneway.impl;
+
+import org.apache.tuscany.sca.itest.oneway.OneWayService;
+
+/**
+ * The service for the oneway itest
+ *
+ * @version $Rev: 537240 $ $Date: 2007-05-11 18:35:03 +0100 (Fri, 11 May 2007) $
+ */
+
+
+public class OneWayServiceImpl implements OneWayService {
+
+ public static int callCount = 0;
+
+ public void doSomething(int count){
+
+ synchronized(this){
+ callCount++;
+ }
+
+ System.out.println("Service: doSomething " + count + " callCount = " + callCount);
+ System.out.flush();
+
+
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWay.composite b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWay.composite
new file mode 100644
index 0000000000..4193c43a63
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWay.composite
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWayClient.composite b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWayClient.composite
new file mode 100644
index 0000000000..ecc8cc7b3a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/main/resources/oneWayClient.composite
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayClientTest.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayClientTest.java
new file mode 100644
index 0000000000..5cc9930f54
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayClientTest.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.oneway;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class OneWayClientTest {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("oneWayClient.composite");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testOneWay() {
+ OneWayClient client =
+ domain.getService(OneWayClient.class, "OneWayClientComponent");
+ try {
+
+ for (int count = 0; count < 1; count++){
+ System.out.println("Test: doSomething " + count);
+ System.out.flush();
+ client.doSomething(count);
+ //Thread.sleep(200);
+ }
+
+ Thread.sleep(2000);
+ } catch (Exception ex) {
+ System.err.println("Exception: " + ex.toString());
+ }
+
+ System.out.println("Finished");
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayTestCase.java b/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayTestCase.java
new file mode 100644
index 0000000000..832114ac17
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/oneway/src/test/java/org/apache/tuscany/sca/itest/oneway/OneWayTestCase.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.oneway;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.itest.oneway.impl.OneWayServiceImpl;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class OneWayTestCase {
+
+ private SCADomain domain;
+
+ @Before
+ public void setUp() throws Exception {
+ domain = SCADomain.newInstance("oneWay.composite");
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testOneWay() {
+ OneWayClient client =
+ domain.getService(OneWayClient.class, "OneWayClientComponent");
+ try {
+
+ for (int count = 0; count < 1; count++){
+ System.out.println("Test: doSomething " + count);
+ System.out.flush();
+ client.doSomething(count);
+ }
+
+ Thread.sleep(5000);
+ } catch (Exception ex) {
+ System.err.println("Exception: " + ex.toString());
+ }
+
+ System.out.println("Finished callCount = " + OneWayServiceImpl.callCount);
+
+ Assert.assertEquals(99, OneWayServiceImpl.callCount);
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/pom.xml b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/pom.xml
new file mode 100644
index 0000000000..3cb247b9af
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-operation-overloading
+ Apache Tuscany SCA Operation Overloading Integration Tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/OverloadASourceTarget.java b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/OverloadASourceTarget.java
new file mode 100644
index 0000000000..f630f9904f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/OverloadASourceTarget.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.opoverload;
+
+
+/**
+ *
+ */
+//@AllowsPassByReference
+public interface OverloadASourceTarget {
+ final String opName = "operationA:";
+
+ String operationA();
+
+ String operationA(int parm1);
+
+ String operationA(int parm1, String parm2);
+
+ String operationA(String parm1, int parm2);
+
+ String operationA(String string);
+
+ String[] operationAall();
+
+}
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadASource.java b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadASource.java
new file mode 100644
index 0000000000..d0f78c409f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadASource.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.opoverload.impl;
+
+import java.util.ArrayList;
+
+import org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ *
+ */
+@Service(OverloadASourceTarget.class)
+public class OverloadASource implements OverloadASourceTarget{
+ public OverloadASourceTarget overloadASourceTarget;
+ /**
+ *
+ */
+ public OverloadASource() {
+
+ }
+ /**
+ * @return
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA()
+ */
+ public String[] operationAall() {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ ArrayList ret = new ArrayList();
+ ret.add(overloadASourceTarget.operationA());
+ ret.add(overloadASourceTarget.operationA(11));
+ ret.add(overloadASourceTarget.operationA("eleven"));
+ ret.add(overloadASourceTarget.operationA(3,"three"));
+ ret.add(overloadASourceTarget.operationA("four",4));
+ return (String[]) ret.toArray(new String[ret.size()]);
+ }
+
+
+ /**
+ * @return
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA()
+ */
+ public String operationA() {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ return overloadASourceTarget.operationA();
+ }
+ /**
+ * @param parm1
+ * @return
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA(int)
+ */
+ public String operationA(int parm1) {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ return overloadASourceTarget.operationA(parm1);
+ }
+ /**
+ * @param parm1
+ * @param parm2
+ * @return
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA(int, java.lang.String)
+ */
+ public String operationA(int parm1, String parm2) {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ return overloadASourceTarget.operationA(parm1, parm2);
+ }
+ public String operationA(String string) {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ return overloadASourceTarget.operationA(string);
+ }
+ /**
+ * @param parm1
+ * @param parm2
+ * @return
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA(java.lang.String, int)
+ */
+ public String operationA(String parm1, int parm2) {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is null";
+ return overloadASourceTarget.operationA(parm1, parm2);
+ }
+
+ @Reference
+ public void setOverloadASourceTarget(OverloadASourceTarget overloadASourceTarget) {
+ assert overloadASourceTarget != null : "reference overloadASourceTarget is set tonull";
+ this.overloadASourceTarget = overloadASourceTarget;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATarget.java b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATarget.java
new file mode 100644
index 0000000000..e83952e573
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATarget.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.opoverload.impl;
+
+import org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget;
+import org.osoa.sca.annotations.Service;
+
+/**
+ *
+ */
+@Service(OverloadASourceTarget.class)
+public class OverloadATarget implements OverloadASourceTarget {
+
+ /**
+ *
+ */
+ public OverloadATarget() {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA(int)
+ */
+ public String operationA(int parm1) {
+ final String ret = opName + parm1;
+ out(ret);
+ return ret;
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA(int,
+ * java.lang.String)
+ */
+ public String operationA(int parm1, String parm2) {
+ final String ret = opName + parm1 + parm2;
+ out(ret);
+ return ret;
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget#operationA()
+ */
+ public String operationA() {
+ out(opName);
+ return opName;
+
+ }
+
+ public String operationA(String parm1, int parm2) {
+ final String ret = opName + parm1 + parm2;
+ out(ret);
+ return ret;
+ }
+
+ public String operationA(String parm1) {
+ final String ret = opName + parm1;
+ out(ret);
+ return ret;
+ }
+
+ private void out(String msg) {
+
+ java.lang.System.out.println(msg);
+ }
+
+ public String[] operationAall() {
+ throw new IllegalArgumentException("not supported");
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/resources/OperationOverload.composite b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/resources/OperationOverload.composite
new file mode 100644
index 0000000000..cbf5aa2078
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/main/resources/OperationOverload.composite
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/test/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATestCase.java b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/test/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATestCase.java
new file mode 100644
index 0000000000..3129b03ff3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/operation-overloading/src/test/java/org/apache/tuscany/sca/test/opoverload/impl/OverloadATestCase.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.opoverload.impl;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.test.opoverload.OverloadASourceTarget;
+
+public class OverloadATestCase extends TestCase {
+
+ private SCADomain domain;
+ private OverloadASourceTarget overloadA;
+
+ public void testOperationAall() {
+ String[] result= overloadA.operationAall();
+ assertEquals(5, result.length);
+ assertEquals(OverloadASourceTarget.opName , result[0]);
+ assertEquals(OverloadASourceTarget.opName + 11, result[1]);
+ assertEquals(OverloadASourceTarget.opName + "eleven", result[2]);
+ assertEquals(OverloadASourceTarget.opName + 3 + "three", result[3]);
+ assertEquals(OverloadASourceTarget.opName + "four" + 4, result[4]);
+ }
+
+// public void testOperationAInt() {
+// String result= overloadA.operationA(29);
+// assertEquals(OverloadASourceTarget.opName + 29, result);
+// }
+//
+// public void testOperationAString() {
+// String result= overloadA.operationA("rick:-)");
+// assertEquals(OverloadASourceTarget.opName + "rick:-)", result);
+// }
+//
+// public void testOperationAIntString() {
+// String result= overloadA.operationA(123, "Tuscany");
+// assertEquals(OverloadASourceTarget.opName +123+ "Tuscany", result);
+// }
+//
+// public void testOperationStringInt() {
+// String result= overloadA.operationA("StringInt", 77);
+// assertEquals(OverloadASourceTarget.opName + "StringInt" + 77, result);
+// }
+//
+
+ @Override
+ protected void setUp() throws Exception {
+ domain = SCADomain.newInstance("OperationOverload.composite");
+ overloadA = domain.getService(OverloadASourceTarget.class, "OverloadASourceComponent");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ domain.close();
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/build-bundles.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/build-bundles.xml
new file mode 100644
index 0000000000..82d536cbfe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/build-bundles.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/pom.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/pom.xml
new file mode 100644
index 0000000000..0e7cbd2920
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/pom.xml
@@ -0,0 +1,211 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-osgi-contribution-classes
+ Apache Tuscany OSGi Contribution Version 1 classes
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-osgi-runtime
+ 1.0.1-incubating
+
+
+
+
+ org.apache.felix
+ org.osgi.core
+ 1.0.0
+
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
+ itest-osgi-contribution-classes-v2
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.1
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ create-bundles
+ generate-test-sources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/OSGiBundleImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/OSGiBundleImpl.java
new file mode 100644
index 0000000000..5f40054ada
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/OSGiBundleImpl.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 supplychain;
+
+
+import java.lang.reflect.Field;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+
+
+/**
+ * Common code for all OSGi bundles which dont use declarative services.
+ * Registers services and sets references.
+ */
+public class OSGiBundleImpl implements ServiceListener, BundleActivator {
+
+
+ String name;
+ String serviceName;
+ String[] references;
+ Class>[] referenceClasses;
+ Field[] referenceFields;
+
+ Class myClass;
+
+ private BundleContext bundleContext;
+
+ public OSGiBundleImpl(String serviceName, String... references) {
+
+ myClass = this.getClass();
+ this.name = this.getClass().getSimpleName();
+ this.serviceName = serviceName;
+ this.references = references;
+
+ try {
+ referenceClasses = new Class[references.length];
+ referenceFields = new Field[references.length];
+ for (int i = 0; i < references.length; i++) {
+ referenceFields[i] = this.getClass().getDeclaredField(references[i]);
+ referenceFields[i].setAccessible(true);
+ referenceClasses[i] = referenceFields[i].getType();
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public void start(BundleContext bc) {
+
+ System.out.println("Started OSGi bundle with activator " + name);
+
+ this.bundleContext = bc;
+
+ bundleContext.registerService(serviceName, this, new Hashtable());
+
+ for (int i = 0; i < references.length; i++) {
+
+ try {
+
+ ServiceReference ref = bundleContext.getServiceReference(referenceClasses[i].getName());
+ if (ref != null) {
+ Object obj = bundleContext.getService(ref);
+ referenceFields[i].set(this, referenceClasses[i].cast(obj));
+ } else {
+ String filter = "(objectclass=" + referenceClasses[i].getName() + ")";
+ this.bundleContext.addServiceListener(this, filter);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void stop(BundleContext bc) {
+ System.out.println("Stop OSGi bundle with activator " + name);
+
+ }
+
+
+ public void serviceChanged(ServiceEvent event) {
+ try {
+ if (event.getType() == ServiceEvent.REGISTERED) {
+
+ ServiceReference ref = event.getServiceReference();
+ Object obj = bundleContext.getService(ref);
+ for (int i = 0; i < references.length; i++) {
+ if (referenceClasses[i].isAssignableFrom(obj.getClass())) {
+ referenceFields[i].set(this, referenceClasses[i].cast(obj));
+ }
+ }
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/Customer.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/Customer.java
new file mode 100644
index 0000000000..225dce0236
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/Customer.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 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);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java
new file mode 100644
index 0000000000..2b8c973e2c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/JavaCustomerComponentImpl.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 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 Retailer retailer;
+
+ public JavaCustomerComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ "(v2) using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.java
new file mode 100644
index 0000000000..a1c7fce60a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.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 supplychain.customer;
+
+
+import supplychain.retailer.Retailer;
+
+/**
+ * This class implements the Customer service component (OSGi declarative services implementation).
+ */
+public class OSGiCustomerComponentImpl implements Customer {
+
+
+ private Retailer retailer;
+
+
+ protected void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ protected void unsetRetailer(Retailer retailer) {
+ this.retailer = null;
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerImpl.java
new file mode 100644
index 0000000000..4647a716c7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/customer/OSGiCustomerImpl.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.customer;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.retailer.Retailer;
+
+/**
+ * This class implements the Customer service component (OSGi procedural services implementation).
+ */
+public class OSGiCustomerImpl extends OSGiBundleImpl implements Customer {
+
+ private Retailer retailer;
+
+ public OSGiCustomerImpl() {
+ super("supplychain.customer.Customer", "retailer");
+
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java
new file mode 100644
index 0000000000..cc5d44d279
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.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 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().getCanonicalName() +
+ "(v2) using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setWarehouse(Warehouse warehouse) {
+ this.warehouse = warehouse;
+ }
+
+
+ public void submitOrder(String order) {
+
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.java
new file mode 100644
index 0000000000..1b7fb15bf1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.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 supplychain.retailer;
+
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Retailer service component (OSGi declarative services implementation).
+ */
+public class OSGiRetailerComponentImpl implements Retailer {
+
+ private Warehouse warehouse;
+
+
+ protected void setWarehouse(Warehouse warehouse) {
+ this.warehouse = warehouse;
+ }
+
+ protected void unsetWarehouse(Warehouse warehouse) {
+ this.warehouse = null;
+ }
+
+ public void submitOrder(String order) {
+
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerImpl.java
new file mode 100644
index 0000000000..e97331c06c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/OSGiRetailerImpl.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 supplychain.retailer;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Retailer service component (OSGi procedural services implementation).
+ */
+public class OSGiRetailerImpl extends OSGiBundleImpl implements Retailer {
+
+ private Warehouse warehouse;
+
+ public OSGiRetailerImpl() {
+
+ super("supplychain.retailer.Retailer", "warehouse");
+ }
+
+ public void submitOrder(String order) {
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/Retailer.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/retailer/Retailer.java
new file mode 100644
index 0000000000..1e87d59af1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/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.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java
new file mode 100644
index 0000000000..2d1bb68e5b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/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() +
+ "(v2) using classloader " + 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.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.java
new file mode 100644
index 0000000000..0f88cca213
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.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 supplychain.shipper;
+
+
+import supplychain.customer.Customer;
+
+/**
+ * This class implements the Shipper service component (OSGi declarative services implementation).
+ */
+public class OSGiShipperComponentImpl implements Shipper {
+
+ private Customer customer;
+
+
+ protected void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+ protected void unsetCustomer(Customer customer) {
+ this.customer = null;
+ }
+
+ public void processShipment(String order) {
+ customer.notifyShipment(order + ", shipped");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperImpl.java
new file mode 100644
index 0000000000..f55a068ede
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/OSGiShipperImpl.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 supplychain.shipper;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.customer.Customer;
+
+/**
+ * This class implements the Shipper service component (OSGi procedural services implementation).
+ */
+public class OSGiShipperImpl extends OSGiBundleImpl implements Shipper {
+
+ private Customer customer;
+
+ public OSGiShipperImpl() {
+ super("supplychain.shipper.Shipper", "customer");
+ }
+
+
+ public void processShipment(String order) {
+ customer.notifyShipment(order + ", shipped");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/Shipper.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/shipper/Shipper.java
new file mode 100644
index 0000000000..2514928c10
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/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.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java
new file mode 100644
index 0000000000..c39a34cb96
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.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 supplychain.warehouse;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service component (POJO implementation).
+ */
+@Service(Warehouse.class)
+@Scope("STATELESS")
+public class JavaWarehouseComponentImpl implements Warehouse {
+
+ private Shipper shipper;
+
+ public JavaWarehouseComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ "(v2) using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setShipper(Shipper shipper) {
+ this.shipper = shipper;
+ }
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.java
new file mode 100644
index 0000000000..600f3f0c74
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.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 supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service component (OSGi declarative services implementation).
+ */
+
+public class OSGiWarehouseComponentImpl implements Warehouse {
+
+ private Shipper shipper;
+
+
+ protected void setShipper(Shipper shipper) {
+ this.shipper = shipper;
+ }
+
+ protected void unsetShipper(Shipper shipper) {
+ this.shipper = null;
+ }
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.java
new file mode 100644
index 0000000000..b8bca97bd0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.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 supplychain.warehouse;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service componentm (OSGi procedural services implementation).
+ */
+
+public class OSGiWarehouseImpl extends OSGiBundleImpl implements Warehouse {
+
+ private Shipper shipper;
+
+ public OSGiWarehouseImpl() {
+ super("supplychain.warehouse.Warehouse", "shipper");
+ }
+
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/Warehouse.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/java/supplychain/warehouse/Warehouse.java
new file mode 100644
index 0000000000..6f1f6b8730
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/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.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/Customer2V2.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/Customer2V2.componentType
new file mode 100644
index 0000000000..7edc392f46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/Customer2V2.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/CustomerV2.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/CustomerV2.componentType
new file mode 100644
index 0000000000..7edc392f46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/CustomerV2.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/customer-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/customer-sca-contribution.xml
new file mode 100644
index 0000000000..4779eff514
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/customer-sca-contribution.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/retailer-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/retailer-sca-contribution.xml
new file mode 100644
index 0000000000..d505834f15
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/retailer-sca-contribution.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/shipper-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/shipper-sca-contribution.xml
new file mode 100644
index 0000000000..6bcf6cef0a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/shipper-sca-contribution.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/supplychain-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..210a68011f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/supplychain-sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/warehouse-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/warehouse-sca-contribution.xml
new file mode 100644
index 0000000000..e23e1a2ecd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/META-INF/warehouse-sca-contribution.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/RetailerV2.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/RetailerV2.componentType
new file mode 100644
index 0000000000..9832da880e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/RetailerV2.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/ShipperV2.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/ShipperV2.componentType
new file mode 100644
index 0000000000..5586179421
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/ShipperV2.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/WarehouseV2.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/WarehouseV2.componentType
new file mode 100644
index 0000000000..ccc4f84ee4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/WarehouseV2.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer.mf
new file mode 100644
index 0000000000..644b207e70
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Customer
+Bundle-SymbolicName: supplychain.customer.Customer
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.retailer;version="[2.0.0,3.0.0)",
+ supplychain.shipper;version="[2.0.0,3.0.0)",
+ supplychain.warehouse;version="[2.0.0,3.0.0)"
+Export-Package: supplychain.customer;version="2.0.0"
+Bundle-Activator: supplychain.customer.OSGiCustomerImpl
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer2.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer2.mf
new file mode 100644
index 0000000000..e649870356
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Customer2.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Customer
+Bundle-SymbolicName: supplychain.customer.Customer
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.retailer,
+ supplychain.shipper,
+ supplychain.warehouse
+Export-Package: supplychain.customer;version="2.0.0"
+Bundle-Activator: supplychain.customer.OSGiCustomerImpl
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Retailer.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Retailer.mf
new file mode 100644
index 0000000000..8e8e33ecd1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Retailer.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Retailer
+Bundle-SymbolicName: supplychain.retailer.Retailer
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.warehouse;version="[2.0.0,3.0.0)"
+Export-Package: supplychain.retailer;version="2.0.0"
+Bundle-Activator: supplychain.retailer.OSGiRetailerImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/RetailerJar.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/RetailerJar.mf
new file mode 100644
index 0000000000..2f4b56835b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/RetailerJar.mf
@@ -0,0 +1 @@
+Manifest-Version: 1.0
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Shipper.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Shipper.mf
new file mode 100644
index 0000000000..5f4a8b94ec
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Shipper.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Shipper
+Bundle-SymbolicName: supplychain.shipper.Shipper
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.customer;version="[2.0.0,3.0.0)"
+Export-Package: supplychain.shipper;version="2.0.0"
+Bundle-Activator: supplychain.shipper.OSGiShipperImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/SupplyChain.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/SupplyChain.mf
new file mode 100644
index 0000000000..57d2ac9e4d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/SupplyChain.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: SupplyChain
+Bundle-SymbolicName: supplychain.SupplyChain
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework
+Export-Package: supplychain.customer;version="2.0.0",
+ supplychain.retailer;version="2.0.0",
+ supplychain.warehouse;version="2.0.0",
+ supplychain.shipper;version="2.0.0"
+Bundle-ClassPath: .,CustomerV2.jar,RetailerV2.jar,WarehouseV2.jar,ShipperV2.jar
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Warehouse.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Warehouse.mf
new file mode 100644
index 0000000000..2e1399bb3b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/osgi/Warehouse.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Warehouse
+Bundle-SymbolicName: supplychain.warehouse.Warehouse
+Bundle-Version: 2.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.shipper;version="[2.0.0,3.0.0)"
+Export-Package: supplychain.warehouse;version="2.0.0"
+Bundle-Activator: supplychain.warehouse.OSGiWarehouseImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/supplychain.composite b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/supplychain.composite
new file mode 100644
index 0000000000..bb8fb2b07c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes-v2/src/main/resources/supplychain.composite
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/build-bundles.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/build-bundles.xml
new file mode 100644
index 0000000000..82d536cbfe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/build-bundles.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/pom.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/pom.xml
new file mode 100644
index 0000000000..7db367ace8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/pom.xml
@@ -0,0 +1,212 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-osgi-contribution-classes-v2
+ Apache Tuscany OSGi Contribution Version 2 classes
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-osgi-runtime
+ 1.0.1-incubating
+
+
+
+
+ org.apache.felix
+ org.osgi.core
+ 1.0.0
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
+
+ itest-osgi-contribution-classes
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.1
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ create-bundles
+ generate-test-sources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/OSGiBundleImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/OSGiBundleImpl.java
new file mode 100644
index 0000000000..5f40054ada
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/OSGiBundleImpl.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 supplychain;
+
+
+import java.lang.reflect.Field;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+
+
+/**
+ * Common code for all OSGi bundles which dont use declarative services.
+ * Registers services and sets references.
+ */
+public class OSGiBundleImpl implements ServiceListener, BundleActivator {
+
+
+ String name;
+ String serviceName;
+ String[] references;
+ Class>[] referenceClasses;
+ Field[] referenceFields;
+
+ Class myClass;
+
+ private BundleContext bundleContext;
+
+ public OSGiBundleImpl(String serviceName, String... references) {
+
+ myClass = this.getClass();
+ this.name = this.getClass().getSimpleName();
+ this.serviceName = serviceName;
+ this.references = references;
+
+ try {
+ referenceClasses = new Class[references.length];
+ referenceFields = new Field[references.length];
+ for (int i = 0; i < references.length; i++) {
+ referenceFields[i] = this.getClass().getDeclaredField(references[i]);
+ referenceFields[i].setAccessible(true);
+ referenceClasses[i] = referenceFields[i].getType();
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public void start(BundleContext bc) {
+
+ System.out.println("Started OSGi bundle with activator " + name);
+
+ this.bundleContext = bc;
+
+ bundleContext.registerService(serviceName, this, new Hashtable());
+
+ for (int i = 0; i < references.length; i++) {
+
+ try {
+
+ ServiceReference ref = bundleContext.getServiceReference(referenceClasses[i].getName());
+ if (ref != null) {
+ Object obj = bundleContext.getService(ref);
+ referenceFields[i].set(this, referenceClasses[i].cast(obj));
+ } else {
+ String filter = "(objectclass=" + referenceClasses[i].getName() + ")";
+ this.bundleContext.addServiceListener(this, filter);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void stop(BundleContext bc) {
+ System.out.println("Stop OSGi bundle with activator " + name);
+
+ }
+
+
+ public void serviceChanged(ServiceEvent event) {
+ try {
+ if (event.getType() == ServiceEvent.REGISTERED) {
+
+ ServiceReference ref = event.getServiceReference();
+ Object obj = bundleContext.getService(ref);
+ for (int i = 0; i < references.length; i++) {
+ if (referenceClasses[i].isAssignableFrom(obj.getClass())) {
+ referenceFields[i].set(this, referenceClasses[i].cast(obj));
+ }
+ }
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/Customer.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/Customer.java
new file mode 100644
index 0000000000..225dce0236
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/Customer.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 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);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.java
new file mode 100644
index 0000000000..d0b0a13e6d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/JavaCustomerComponentImpl.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 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 Retailer retailer;
+
+ public JavaCustomerComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ " using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.java
new file mode 100644
index 0000000000..a1c7fce60a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerComponentImpl.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 supplychain.customer;
+
+
+import supplychain.retailer.Retailer;
+
+/**
+ * This class implements the Customer service component (OSGi declarative services implementation).
+ */
+public class OSGiCustomerComponentImpl implements Customer {
+
+
+ private Retailer retailer;
+
+
+ protected void setRetailer(Retailer retailer) {
+ this.retailer = retailer;
+ }
+
+ protected void unsetRetailer(Retailer retailer) {
+ this.retailer = null;
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerImpl.java
new file mode 100644
index 0000000000..4647a716c7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/customer/OSGiCustomerImpl.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.customer;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.retailer.Retailer;
+
+/**
+ * This class implements the Customer service component (OSGi procedural services implementation).
+ */
+public class OSGiCustomerImpl extends OSGiBundleImpl implements Customer {
+
+ private Retailer retailer;
+
+ public OSGiCustomerImpl() {
+ super("supplychain.customer.Customer", "retailer");
+
+ }
+
+ public void purchaseGoods() {
+ retailer.submitOrder("Order");
+ }
+
+ public void notifyShipment(String order) {
+ System.out.print("Work thread " + Thread.currentThread() + " - ");
+ System.out.println(order);
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.java
new file mode 100644
index 0000000000..d2bf71ed28
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/JavaRetailerComponentImpl.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 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().getCanonicalName() +
+ " using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setWarehouse(Warehouse warehouse) {
+ this.warehouse = warehouse;
+ }
+
+
+ public void submitOrder(String order) {
+
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.java
new file mode 100644
index 0000000000..1b7fb15bf1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerComponentImpl.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 supplychain.retailer;
+
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Retailer service component (OSGi declarative services implementation).
+ */
+public class OSGiRetailerComponentImpl implements Retailer {
+
+ private Warehouse warehouse;
+
+
+ protected void setWarehouse(Warehouse warehouse) {
+ this.warehouse = warehouse;
+ }
+
+ protected void unsetWarehouse(Warehouse warehouse) {
+ this.warehouse = null;
+ }
+
+ public void submitOrder(String order) {
+
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerImpl.java
new file mode 100644
index 0000000000..e97331c06c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/OSGiRetailerImpl.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 supplychain.retailer;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.warehouse.Warehouse;
+
+/**
+ * This class implements the Retailer service component (OSGi procedural services implementation).
+ */
+public class OSGiRetailerImpl extends OSGiBundleImpl implements Retailer {
+
+ private Warehouse warehouse;
+
+ public OSGiRetailerImpl() {
+
+ super("supplychain.retailer.Retailer", "warehouse");
+ }
+
+ public void submitOrder(String order) {
+ warehouse.fulfillOrder(order + ", submitted");
+
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/Retailer.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/retailer/Retailer.java
new file mode 100644
index 0000000000..1e87d59af1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/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.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/JavaShipperComponentImpl.java
new file mode 100644
index 0000000000..2556a0cfa0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/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 classloader " + 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.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.java
new file mode 100644
index 0000000000..0f88cca213
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperComponentImpl.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 supplychain.shipper;
+
+
+import supplychain.customer.Customer;
+
+/**
+ * This class implements the Shipper service component (OSGi declarative services implementation).
+ */
+public class OSGiShipperComponentImpl implements Shipper {
+
+ private Customer customer;
+
+
+ protected void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+ protected void unsetCustomer(Customer customer) {
+ this.customer = null;
+ }
+
+ public void processShipment(String order) {
+ customer.notifyShipment(order + ", shipped");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperImpl.java
new file mode 100644
index 0000000000..f55a068ede
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/OSGiShipperImpl.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 supplychain.shipper;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.customer.Customer;
+
+/**
+ * This class implements the Shipper service component (OSGi procedural services implementation).
+ */
+public class OSGiShipperImpl extends OSGiBundleImpl implements Shipper {
+
+ private Customer customer;
+
+ public OSGiShipperImpl() {
+ super("supplychain.shipper.Shipper", "customer");
+ }
+
+
+ public void processShipment(String order) {
+ customer.notifyShipment(order + ", shipped");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/Shipper.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/shipper/Shipper.java
new file mode 100644
index 0000000000..2514928c10
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/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.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.java
new file mode 100644
index 0000000000..e180c37e3f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/JavaWarehouseComponentImpl.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 supplychain.warehouse;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service component (POJO implementation).
+ */
+@Service(Warehouse.class)
+@Scope("STATELESS")
+public class JavaWarehouseComponentImpl implements Warehouse {
+
+ private Shipper shipper;
+
+ public JavaWarehouseComponentImpl() {
+ System.out.println("Created " + this.getClass().getCanonicalName() +
+ " using classloader " + this.getClass().getClassLoader());
+ }
+
+ @Reference
+ public void setShipper(Shipper shipper) {
+ this.shipper = shipper;
+ }
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.java
new file mode 100644
index 0000000000..600f3f0c74
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseComponentImpl.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 supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service component (OSGi declarative services implementation).
+ */
+
+public class OSGiWarehouseComponentImpl implements Warehouse {
+
+ private Shipper shipper;
+
+
+ protected void setShipper(Shipper shipper) {
+ this.shipper = shipper;
+ }
+
+ protected void unsetShipper(Shipper shipper) {
+ this.shipper = null;
+ }
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.java
new file mode 100644
index 0000000000..b8bca97bd0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/OSGiWarehouseImpl.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 supplychain.warehouse;
+
+
+import supplychain.OSGiBundleImpl;
+import supplychain.shipper.Shipper;
+
+/**
+ * This class implements the Warehouse service componentm (OSGi procedural services implementation).
+ */
+
+public class OSGiWarehouseImpl extends OSGiBundleImpl implements Warehouse {
+
+ private Shipper shipper;
+
+ public OSGiWarehouseImpl() {
+ super("supplychain.warehouse.Warehouse", "shipper");
+ }
+
+
+ public void fulfillOrder(String order) {
+ shipper.processShipment(order + ", fulfilled");
+
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/Warehouse.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/java/supplychain/warehouse/Warehouse.java
new file mode 100644
index 0000000000..6f1f6b8730
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/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.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/Customer2V1.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/Customer2V1.componentType
new file mode 100644
index 0000000000..7edc392f46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/Customer2V1.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/CustomerV1.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/CustomerV1.componentType
new file mode 100644
index 0000000000..7edc392f46
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/CustomerV1.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml
new file mode 100644
index 0000000000..828dc6f472
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/customer-sca-contribution.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml
new file mode 100644
index 0000000000..9293b1ff52
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/retailer-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml
new file mode 100644
index 0000000000..03077aa4d4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/shipper-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml
new file mode 100644
index 0000000000..210a68011f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/supplychain-sca-contribution.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml
new file mode 100644
index 0000000000..c96deb4e1b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/META-INF/warehouse-sca-contribution.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/RetailerV1.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/RetailerV1.componentType
new file mode 100644
index 0000000000..9832da880e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/RetailerV1.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/ShipperV1.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/ShipperV1.componentType
new file mode 100644
index 0000000000..5586179421
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/ShipperV1.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/WarehouseV1.componentType b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/WarehouseV1.componentType
new file mode 100644
index 0000000000..ccc4f84ee4
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/WarehouseV1.componentType
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer.mf
new file mode 100644
index 0000000000..404995a90f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Customer
+Bundle-SymbolicName: supplychain.customer.Customer
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.retailer;version="[1.0.0,2.0.0)",
+ supplychain.warehouse;version="[1.0.0,2.0.0)",
+ supplychain.shipper;version="[1.0.0,2.0.0)"
+Export-Package: supplychain.customer;version="1.0.0"
+Bundle-Activator: supplychain.customer.OSGiCustomerImpl
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer2.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer2.mf
new file mode 100644
index 0000000000..0441e8c6f0
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Customer2.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Customer
+Bundle-SymbolicName: supplychain.customer.Customer
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.retailer,
+ supplychain.shipper,
+ supplychain.warehouse
+Export-Package: supplychain.customer;version="1.0.0"
+Bundle-Activator: supplychain.customer.OSGiCustomerImpl
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Retailer.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Retailer.mf
new file mode 100644
index 0000000000..ac0ca72030
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Retailer.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Retailer
+Bundle-SymbolicName: supplychain.retailer.Retailer
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.warehouse;version="[1.0.0,2.0.0)"
+Export-Package: supplychain.retailer;version="1.0.0"
+Bundle-Activator: supplychain.retailer.OSGiRetailerImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/RetailerJar.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/RetailerJar.mf
new file mode 100644
index 0000000000..2f4b56835b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/RetailerJar.mf
@@ -0,0 +1 @@
+Manifest-Version: 1.0
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Shipper.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Shipper.mf
new file mode 100644
index 0000000000..61f62fa16e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Shipper.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Shipper
+Bundle-SymbolicName: supplychain.shipper.Shipper
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.customer;version="[1.0.0,2.0.0)"
+Export-Package: supplychain.shipper;version="1.0.0"
+Bundle-Activator: supplychain.shipper.OSGiShipperImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/SupplyChain.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/SupplyChain.mf
new file mode 100644
index 0000000000..dc4aa2c30e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/SupplyChain.mf
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: SupplyChain
+Bundle-SymbolicName: supplychain.SupplyChain
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework
+Export-Package: supplychain.customer;version="1.0.0",
+ supplychain.retailer;version="1.0.0",
+ supplychain.warehouse;version="1.0.0",
+ supplychain.shipper;version="1.0.0"
+Bundle-ClassPath: .,CustomerV1.jar,RetailerV1.jar,WarehouseV1.jar,ShipperV1.jar
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Warehouse.mf b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Warehouse.mf
new file mode 100644
index 0000000000..d149165366
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/osgi/Warehouse.mf
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Warehouse
+Bundle-SymbolicName: supplychain.warehouse.Warehouse
+Bundle-Version: 1.0.0
+Bundle-Localization: plugin
+Import-Package: org.osgi.framework,
+ supplychain.shipper;version="[1.0.0,2.0.0)"
+Export-Package: supplychain.warehouse;version="1.0.0"
+Bundle-Activator: supplychain.warehouse.OSGiWarehouseImpl
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/supplychain.composite b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/supplychain.composite
new file mode 100644
index 0000000000..4a18aed5f3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-classes/src/main/resources/supplychain.composite
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/pom.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/pom.xml
new file mode 100644
index 0000000000..72baee0f0f
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/pom.xml
@@ -0,0 +1,104 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-osgi-contribution-test
+ Apache Tuscany OSGi Contribution tests
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-osgi-runtime
+ 1.0.1-incubating
+
+
+
+ org.apache.felix
+ org.apache.felix.main
+ 1.0.0
+
+
+
+ org.apache.felix
+ org.osgi.core
+ 1.0.0
+
+
+
+ org.apache.felix
+ org.apache.felix.configadmin
+ 0.9.0-SNAPSHOT
+
+
+
+ org.apache.felix
+ org.apache.felix.log
+ 0.9.0-incubator-SNAPSHOT
+
+
+
+ org.apache.felix
+ org.apache.felix.scr
+ 0.9.0-SNAPSHOT
+
+
+
+
+ junit
+ junit
+ 4.2
+ test
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.java
new file mode 100644
index 0000000000..108481fcbd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/java/org/apache/tuscany/sca/contribution/osgi/OSGiTestUtil.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.contribution.osgi;
+
+import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * OSGi Test Utils
+ */
+public class OSGiTestUtil {
+
+ public static BundleContext setUpOSGiTestRuntime() throws Exception {
+
+ setUpFelixTestRuntime();
+ return OSGiRuntime.getRuntime().getBundleContext();
+ }
+
+
+ public static void setUpFelixTestRuntime() throws Exception {
+
+ String felixConfigFileName = "file:target/test-classes/osgi/felix/felix.config.properties";
+
+ System.setProperty("felix.config.properties", felixConfigFileName);
+
+ try {
+
+ ClassLoader cl = OSGiTestUtil.class.getClassLoader();
+
+ Class felixMainClass = cl.loadClass("org.apache.felix.main.Main");
+ if (felixMainClass != null) {
+ String felixDir = felixMainClass.getProtectionDomain().getCodeSource().getLocation().getPath();
+ int index = 0;
+ if ((index = felixDir.indexOf("/org.apache.felix.main")) >= 0) {
+ felixDir = felixDir.substring(0, index);
+ System.setProperty("FELIX_DIR", felixDir);
+ }
+ }
+
+ } catch (Exception e) {
+ // Ignore
+ }
+
+
+ }
+
+ public static void shutdownOSGiRuntime() {
+ try {
+ OSGiRuntime.stop();
+
+ } catch (Exception e) {
+ // Ignore
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/LICENSE.txt b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000000..0084319535
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, serviceDefinition marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/NOTICE b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000000..ecc68a9614
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,14 @@
+${pom.name}
+Copyright (c) 2005 - 2006 The Apache Software Foundation
+
+Apache Tuscany is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Web Services PMC. Incubation is
+required of all newly accepted projects until a further review indicates that
+the infrastructure, communications, and decision making process have stabilized
+in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of the
+code, it does indicate that the project has yet to be fully endorsed by the ASF.
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt
new file mode 100644
index 0000000000..9b26d1690a
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt
@@ -0,0 +1,35 @@
+Apache Tuscany M1 build (May, 2006)
+===================================
+
+http://incubator.apache.org/tuscany/
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness or
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Support
+-------
+
+Any problem with this release can be reported to the Tuscany mailing list
+or in the JIRA issue tracker.
+
+Mailing list subscription:
+ tuscany-dev-subscribe@ws.apache.org
+
+Jira:
+ http://issues.apache.org/jira/browse/Tuscany
+
+
+Thank you for using Tuscany!
+
+
+The Tuscany Team.
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java
new file mode 100644
index 0000000000..28fe368663
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.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.contribution.osgi.test;
+
+
+/*
+ *
+ * Supplychain using OSGi and non-OSGi contributions
+ *
+ *
+ */
+
+public class MixedContributionTestCase extends SCAResolverTestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+
+
+ customerJarName = "Customer2";
+ retailerJarName = "RetailerJar";
+
+ setUpOSGi();
+ setUpSCA();
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java
new file mode 100644
index 0000000000..9d8b7b24a2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java
@@ -0,0 +1,182 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.contribution.osgi.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+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.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+/*
+ *
+ * Supplychain using OSGi contributions, with nested jar files and bundles used
+ * by and
+ *
+ * SupplyChain v1 is a bundle containing jar files which are used by
+ * SupplyChain v2 is a bundle containing bundles which are used by
+ */
+
+public class NestedBundleTestCase extends TestCase {
+
+
+ protected EmbeddedSCADomain domain;
+
+ private SupplyChain supplyChainV1;
+ private SupplyChain supplyChainV2;
+
+ @Override
+ protected void setUp() throws Exception {
+
+ setUpOSGi();
+ setUpSCA();
+ }
+
+ protected void setUpOSGi() throws Exception {
+ OSGiTestUtil.setUpFelixTestRuntime();
+ }
+
+ protected void setUpSCA() throws Exception {
+ //Create a test embedded SCA domain
+ ClassLoader cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+ supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+ contributionService, "V1");
+ supplyChainV1.setUpSCA();
+
+ supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+ contributionService, "V2");
+ supplyChainV2.setUpSCA();
+ }
+
+
+
+ @Override
+ public void tearDown() throws Exception {
+
+
+ supplyChainV1.tearDownSCA();
+ supplyChainV2.tearDownSCA();
+
+ domain.stop();
+
+ domain.close();
+
+ OSGiTestUtil.shutdownOSGiRuntime();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ public void test() throws Exception {
+
+ ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+ customerClassRef = supplyChainV1.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+ Class customerClass = customerClassRef.getJavaClass();
+
+ Object customer =
+ domain.getService(customerClass, "CustomerComponent");
+
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(1000);
+
+ ClassReference customerClassRefV2 = new ClassReference("supplychain.customer.Customer");
+ customerClassRefV2 = supplyChainV2.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRefV2);
+ Class customerClassV2 = customerClassRefV2.getJavaClass();
+
+ Object customerV2 =
+ domain.getService(customerClassV2, "CustomerComponentV2");
+
+ Method mV2 = customerClassV2.getMethod("purchaseGoods");
+ mV2.invoke(customerV2);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(2000);
+
+ System.out.println("Test complete");
+
+ }
+
+ private class SupplyChain {
+
+ private String folderName;
+ private ContributionService contributionService;
+ private String version;
+
+ private Contribution supplychainContribution;
+
+
+ public SupplyChain(String folderName, ContributionService contributionService, String version) {
+ this.folderName = folderName;
+ this.contributionService = contributionService;
+ this.version = version;
+ }
+
+ protected void setUpSCA() throws Exception {
+ File supplychainLocation = new File(folderName + "/SupplyChain" + version + ".jar");
+ URL supplychainContribURL = supplychainLocation.toURL();
+
+
+ String supplychainURI = "SupplyChain" + version;
+
+ supplychainContribution = contributionService.contribute(
+ supplychainURI, supplychainContribURL, true);
+
+ for (Composite deployable : supplychainContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : supplychainContribution.getDeployables() ) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void tearDownSCA() throws Exception {
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("SupplyChain" + version);
+
+ // Stop Components from my composite
+ for (Composite deployable : supplychainContribution.getDeployables() ) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ }
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java
new file mode 100644
index 0000000000..ca363a2c8e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java
@@ -0,0 +1,257 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.contribution.osgi.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.Hashtable;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.osgi.impl.OSGiModelResolverImpl;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/*
+ *
+ * Supplychain using OSGi contributions, using an OSGi ModelResolver
+ *
+ * Notes:
+ * All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ * dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *
+ * All dependent OSGi contribution bundles should be installed before the referring contribution.
+ * Hence dependencies should be a tree and cannot contain cycles.
+ *
+ * For Jar files contained within OSGi bundles, Bundle-Classpath should be
+ * set so that standard OSGi class resolution is sufficient to resolve classes containing in
+ * nested jars or bundles.
+ */
+
+public class OSGiResolverTestCase extends TestCase {
+
+
+ protected EmbeddedSCADomain domain;
+ protected BundleContext bundleContext;
+
+ private SupplyChain supplyChainV1;
+ private SupplyChain supplyChainV2;
+
+ @Override
+ protected void setUp() throws Exception {
+
+ setUpOSGi();
+ setUpSCA();
+ }
+
+ protected void setUpOSGi() throws Exception {
+ bundleContext = OSGiTestUtil.setUpOSGiTestRuntime();
+ }
+
+ protected void setUpSCA() throws Exception {
+ //Create a test embedded SCA domain
+ ClassLoader cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+ supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+ contributionService, "V1");
+ supplyChainV1.setUpSCA();
+
+ supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+ contributionService, "V2");
+ supplyChainV2.setUpSCA();
+ }
+
+
+
+ @Override
+ public void tearDown() throws Exception {
+
+
+ supplyChainV1.tearDownSCA();
+ supplyChainV2.tearDownSCA();
+
+ domain.stop();
+
+ domain.close();
+
+ OSGiTestUtil.shutdownOSGiRuntime();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ public void test() throws Exception {
+
+ Class customerClass = supplyChainV1.customerBundle.loadClass("supplychain.customer.Customer");
+
+ Object customer =
+ domain.getService(customerClass, "CustomerComponent");
+
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(1000);
+
+ Class customerClassV2 = supplyChainV2.customerBundle.loadClass("supplychain.customer.Customer");
+
+ Object customerV2 =
+ domain.getService(customerClassV2, "CustomerComponentV2");
+
+ Method mV2 = customerClassV2.getMethod("purchaseGoods");
+ mV2.invoke(customerV2);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(2000);
+
+ System.out.println("Test complete");
+
+ }
+
+ private class SupplyChain {
+
+ private String folderName;
+ private ContributionService contributionService;
+ private String version;
+
+ private Bundle customerBundle;
+
+
+ private Contribution customerContribution;
+ private Contribution retailerContribution;
+ private Contribution warehouseContribution;
+ private Contribution shipperContribution;
+
+
+ public SupplyChain(String folderName, ContributionService contributionService, String version) {
+ this.folderName = folderName;
+ this.contributionService = contributionService;
+ this.version = version;
+ }
+
+ protected void setUpSCA() throws Exception {
+ File customerLocation = new File(folderName + "/Customer" + version + ".jar");
+ URL customerContribURL = customerLocation.toURL();
+ File retailerLocation = new File(folderName + "/Retailer" + version + ".jar");
+ URL retailerContribURL = retailerLocation.toURL();
+ File warehouseLocation = new File(folderName + "/Warehouse" + version + ".jar");
+ URL warehouseContribURL = warehouseLocation.toURL();
+ File shipperLocation = new File(folderName + "/Shipper" + version + ".jar");
+ URL shipperContribURL = shipperLocation.toURL();
+
+ customerBundle = bundleContext.installBundle(customerContribURL.toString());
+ Bundle retailerBundle = bundleContext.installBundle(retailerContribURL.toString());
+ Bundle warehouseBundle = bundleContext.installBundle(warehouseContribURL.toString());
+ Bundle shipperBundle = bundleContext.installBundle(shipperContribURL.toString());
+
+ Hashtable bundles = new Hashtable();
+ bundles.put("Customer" + version + ".jar", customerBundle);
+ bundles.put("Retailer" + version + ".jar", retailerBundle);
+ bundles.put("Warehouse" + version + ".jar", warehouseBundle);
+ bundles.put("Shipper" + version + ".jar", shipperBundle);
+
+ ModelResolver customerResolver = new OSGiModelResolverImpl(bundles);
+
+ bundles = new Hashtable();
+ bundles.put("Retailer" + version + ".jar", retailerBundle);
+ ModelResolver retailerResolver = new OSGiModelResolverImpl(bundles);
+
+ bundles = new Hashtable();
+ bundles.put("Warehouse" + version + ".jar", warehouseBundle);
+ ModelResolver warehouseResolver = new OSGiModelResolverImpl(bundles);
+
+ bundles = new Hashtable();
+ bundles.put("Shipper" + version + ".jar", shipperBundle);
+ ModelResolver shipperResolver = new OSGiModelResolverImpl(bundles);
+
+
+ shipperContribution = contributionService.contribute(
+ "Shipper" + version,
+ shipperContribURL, shipperResolver, false);
+ warehouseContribution = contributionService.contribute(
+ "Warehouse" + version,
+ warehouseContribURL, warehouseResolver, false);
+ retailerContribution = contributionService.contribute(
+ "Retailer" + version,
+ retailerContribURL, retailerResolver, false);
+
+ customerContribution = contributionService.contribute(
+ "Customer" + version,
+ customerContribURL, customerResolver, false);
+
+ for (Composite deployable : customerContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+
+ for (Composite deployable : retailerContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ for (Composite deployable : warehouseContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ for (Composite deployable : shipperContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : customerContribution.getDeployables() ) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void tearDownSCA() throws Exception {
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("Customer" + version);
+ contributionService.remove("Retailer" + version);
+ contributionService.remove("Warehouse" + version);
+ contributionService.remove("Shipper" + version);
+
+
+ // Stop Components from my composite
+ for (Composite deployable : customerContribution.getDeployables() ) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ }
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java
new file mode 100644
index 0000000000..a1652ebbdf
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java
@@ -0,0 +1,240 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.contribution.osgi.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+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.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/*
+ *
+ * Supplychain using OSGi contributions, using default SCA resolver
+ *
+ * This test uses two sets of four contributions where each set contains a bundle corresponding
+ * to the four components of supplychain (customer, retailer, warehouse and shipper).
+ * Tests classes from the bundle used in , and the bundles themselves
+ * used as the bundle in .
+ *
+ * Notes:
+ * All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ * dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *
+ * Notes:
+ * All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ * dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *
+ * All dependent OSGi contribution bundles should be installed before the referring contribution.
+ * Hence dependencies should be a tree and cannot contain cycles.
+ *
+ * For Jar files contained within OSGi bundles, Bundle-Classpath should be
+ * set so that standard OSGi class resolution is sufficient to resolve classes containing in
+ * nested jars or bundles.
+ */
+
+public class SCAResolverTestCase extends TestCase {
+
+
+ protected EmbeddedSCADomain domain;
+
+ private SupplyChain supplyChainV1;
+ private SupplyChain supplyChainV2;
+
+
+ protected String customerJarName = "Customer";
+ protected String retailerJarName = "Retailer";
+ protected String warehouseJarName = "Warehouse";
+ protected String shipperJarName = "Shipper";
+
+
+
+ @Override
+ protected void setUp() throws Exception {
+
+ setUpOSGi();
+ setUpSCA();
+ }
+
+ protected void setUpOSGi() throws Exception {
+ OSGiTestUtil.setUpFelixTestRuntime();
+ }
+
+ protected void setUpSCA() throws Exception {
+ //Create a test embedded SCA domain
+ ClassLoader cl = getClass().getClassLoader();
+ domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+ supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+ contributionService, "V1");
+ supplyChainV1.setUpSCA();
+
+ supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+ contributionService, "V2");
+ supplyChainV2.setUpSCA();
+ }
+
+
+
+ @Override
+ public void tearDown() throws Exception {
+
+
+ supplyChainV1.tearDownSCA();
+ supplyChainV2.tearDownSCA();
+
+ domain.stop();
+
+ domain.close();
+
+ OSGiTestUtil.shutdownOSGiRuntime();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ public void test() throws Exception {
+
+ ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+ customerClassRef = supplyChainV1.customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+ Class customerClass = customerClassRef.getJavaClass();
+
+ Object customer =
+ domain.getService(customerClass, "CustomerComponent");
+
+ Method m = customerClass.getMethod("purchaseGoods");
+ m.invoke(customer);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(1000);
+
+ ClassReference customerClassRefV2 = new ClassReference("supplychain.customer.Customer");
+ customerClassRefV2 = supplyChainV2.customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRefV2);
+ Class customerClassV2 = customerClassRefV2.getJavaClass();
+
+ Object customerV2 =
+ domain.getService(customerClassV2, "CustomerComponentV2");
+
+ Method mV2 = customerClassV2.getMethod("purchaseGoods");
+ mV2.invoke(customerV2);
+
+ System.out.println("Sleeping ...");
+ Thread.sleep(2000);
+
+ System.out.println("Test complete");
+
+ }
+
+ private class SupplyChain {
+
+ private String folderName;
+ private ContributionService contributionService;
+ private String version;
+
+ private Contribution customerContribution;
+ private Contribution retailerContribution;
+ private Contribution warehouseContribution;
+ private Contribution shipperContribution;
+
+
+ public SupplyChain(String folderName, ContributionService contributionService, String version) {
+ this.folderName = folderName;
+ this.contributionService = contributionService;
+ this.version = version;
+ }
+
+ protected void setUpSCA() throws Exception {
+ File customerLocation = new File(folderName + "/" + customerJarName + version + ".jar");
+ URL customerContribURL = customerLocation.toURL();
+ File retailerLocation = new File(folderName + "/" + retailerJarName + version + ".jar");
+ URL retailerContribURL = retailerLocation.toURL();
+ File warehouseLocation = new File(folderName + "/" + warehouseJarName + version + ".jar");
+ URL warehouseContribURL = warehouseLocation.toURL();
+ File shipperLocation = new File(folderName + "/" + shipperJarName + version + ".jar");
+ URL shipperContribURL = shipperLocation.toURL();
+
+ shipperContribution = contributionService.contribute("Shipper"
+ + version, shipperContribURL, true);
+ warehouseContribution = contributionService.contribute("Warehouse"
+ + version, warehouseContribURL, true);
+ retailerContribution = contributionService.contribute("Retailer"
+ + version, retailerContribURL, true);
+ customerContribution = contributionService.contribute("Customer"
+ + version, customerContribURL, true);
+
+
+ for (Composite deployable : customerContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+
+ for (Composite deployable : retailerContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ for (Composite deployable : warehouseContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ for (Composite deployable : shipperContribution.getDeployables() ) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.getCompositeBuilder().build(deployable);
+ }
+
+ // Start Components from my composite
+ for (Composite deployable : customerContribution.getDeployables() ) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+ }
+
+ public void tearDownSCA() throws Exception {
+ // Remove the contribution from the in-memory repository
+ contributionService.remove("Customer" + version);
+ contributionService.remove("Retailer" + version);
+ contributionService.remove("Warehouse" + version);
+ contributionService.remove("Shipper" + version);
+
+
+ // Stop Components from my composite
+ for (Composite deployable : customerContribution.getDeployables() ) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ }
+
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
new file mode 100644
index 0000000000..72fd6fd843
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
@@ -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.
+#
+#
+# Framework config properties.
+#
+org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
+ org.osgi.service.packageadmin; version=1.2.0, \
+ org.osgi.service.startlevel; version=1.0.0, \
+ org.osgi.service.url; version=1.0.0
+
+
+felix.auto.start.1= \
+ "file://${FELIX_DIR}/org.apache.felix.shell/1.0.0/org.apache.felix.shell-1.0.0.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.0.0/org.apache.felix.shell.tui-1.0.0.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.0.0/org.apache.felix.bundlerepository-1.0.0.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.scr/0.9.0-SNAPSHOT/org.apache.felix.scr-0.9.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.log/0.9.0-incubator-SNAPSHOT/org.apache.felix.log-0.9.0-incubator-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.configadmin/0.9.0-SNAPSHOT/org.apache.felix.configadmin-0.9.0-SNAPSHOT.jar"
+
+
+felix.startlevel.framework=1
+felix.startlevel.bundle=1
+
+#
+# Bundle config properties.
+#
+org.osgi.service.http.port=8080
+obr.shell.telnet=on
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/pom.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/pom.xml
new file mode 100644
index 0000000000..a294e0f56e
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-contribution/pom.xml
@@ -0,0 +1,52 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-contribution-osgi
+ pom
+ Apache Tuscany OSGi Contribution Tests
+
+
+ contribution-classes
+ contribution-classes-v2
+ contribution-test
+
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution-impl
+ 1.0.1-incubating
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/build-bundles.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/build-bundles.xml
new file mode 100644
index 0000000000..450b14a463
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/build-bundles.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/pom.xml b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/pom.xml
new file mode 100644
index 0000000000..468e0f8723
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/pom.xml
@@ -0,0 +1,1115 @@
+
+
+
+ 4.0.0
+
+ org.apache.tuscany.sca
+ tuscany-itest
+ 1.0.1-incubating
+ ../pom.xml
+
+ itest-osgi-implementation
+ Apache Tuscany SCA OSGi-SCA Integration Tests
+
+
+
+
+ org.apache.felix
+ org.apache.felix.main
+ 1.0.0
+
+
+
+ org.apache.felix
+ org.osgi.core
+ 1.0.0
+
+
+
+ org.apache.felix
+ org.apache.felix.configadmin
+ 0.9.0-SNAPSHOT
+
+
+
+ org.apache.felix
+ javax.servlet
+
+
+
+
+
+ org.apache.felix
+ org.apache.felix.log
+ 0.9.0-incubator-SNAPSHOT
+
+
+
+ org.apache.felix
+ org.apache.felix.scr
+ 0.9.0-SNAPSHOT
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-embedded
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-java-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-osgi-runtime
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-implementation-osgi
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-contribution
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-binding-ws-axis2
+ 1.0.1-incubating
+ runtime
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-http
+ 1.0.1-incubating
+
+
+
+ org.apache.tuscany.sca
+ tuscany-host-jetty
+ 1.0.1-incubating
+ test
+
+
+
+ junit
+ junit
+ 4.2
+
+
+
+
+ itest-osgi-implementation
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.1
+
+
+
+ ant
+ ant-trax
+ 1.6.5
+
+
+
+
+
+ create-bundles
+ generate-test-sources
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java
new file mode 100644
index 0000000000..cfecd989fe
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.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 callback.client;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/*
+ * Callback interface
+ */
+public interface CallbackCallback {
+
+ public void callbackMessage(String aString);
+
+ public void callbackIncrement(String aString);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java
new file mode 100644
index 0000000000..43bc26f2f5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.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 callback.client;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ * Callback test client interface
+ */
+public interface CallbackClient {
+
+ public void run();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/JavaCallbackClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/JavaCallbackClientImpl.java
new file mode 100644
index 0000000000..1a6b194b04
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/JavaCallbackClientImpl.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 callback.client;
+
+import junit.framework.Assert;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import callback.service.CallbackService;
+
+@Service(CallbackClient.class)
+/**
+ * Callback test client implementation
+ */
+public class JavaCallbackClientImpl implements CallbackClient, CallbackCallback {
+
+ @Reference
+ protected CallbackService callbackService;
+
+ 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() {
+ callbackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we cant 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("CallbackITest - test1a", "Who's There", this.getReturnMessage());
+
+ }
+
+ private void test1b() {
+ callbackService.noCallback("No Reply Desired");
+ Assert.assertEquals("CallbackITest - test1b", 1, 1);
+
+ return;
+ }
+
+ private void test1c() {
+ callbackService.multiCallback("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we cant 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("CallbackITest - 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.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/OSGiCallbackClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/OSGiCallbackClientImpl.java
new file mode 100644
index 0000000000..414e5d2f9b
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/client/OSGiCallbackClientImpl.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 callback.client;
+
+import java.util.Hashtable;
+
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+import callback.service.CallbackService;
+
+/**
+ * OSGi Callback test client implementation
+ */
+public class OSGiCallbackClientImpl implements
+ CallbackClient, CallbackCallback, BundleActivator {
+
+ protected CallbackService callbackService;
+
+ private static String returnMessage = null;
+ private static int callbackCount = 0;
+ private static Object monitor = new Object();
+
+ private BundleContext bundleContext;
+
+ 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() {
+ callbackService.knockKnock("Knock Knock");
+ int count = 0;
+
+ //
+ // If we cant 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();
+ }
+ }
+ }
+
+ if (!"Who's There".equals(this.getReturnMessage())) {
+ throw new RuntimeException("CallbackITest - test1a");
+ }
+
+ }
+
+ private void test1b() {
+ callbackService.noCallback("No Reply Desired");
+
+ return;
+ }
+
+ private void test1c() {
+ callbackService.multiCallback("Call me back 3 times");
+ int count = 0;
+
+ //
+ // If we cant 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();
+ }
+ }
+ }
+
+ if (this.getCallbackCount() != 3)
+ throw new RuntimeException("CallbackITest - test1c");
+ 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();
+ }
+ }
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ System.out.println("Started OSGiCallbackClientImpl bundle ");
+
+ this.bundleContext = bc;
+
+ Hashtable serviceProps = new Hashtable();
+ serviceProps.put("component.service.name", "CallbackClient/CallbackClient");
+
+ serviceProps.put("component.name", "CallbackClient");
+ bundleContext.registerService("callback.client.CallbackClient", this, serviceProps);
+
+ Hashtable callbackProps = new Hashtable();
+ callbackProps.put("component.service.name", "CallbackClient/callbackService");
+ callbackProps.put("component.name", "CallbackClient");
+
+ bundleContext.registerService("callback.client.CallbackCallback", this, callbackProps);
+
+ ServiceReference ref= bundleContext.getServiceReference("callback.service.CallbackService");
+
+ if (ref != null)
+ callbackService = (callback.service.CallbackService)bundleContext.getService(ref);
+
+
+
+
+ }
+
+ public void stop(BundleContext bc) {
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/CallbackService.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/CallbackService.java
new file mode 100644
index 0000000000..5383e1e268
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/CallbackService.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 callback.service;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Remotable;
+
+import callback.client.CallbackCallback;
+
+@Remotable
+@Callback(CallbackCallback.class)
+/*
+ * Callback service interface
+ */
+public interface CallbackService {
+
+ public void knockKnock(String aString);
+
+ public void noCallback(String aString);
+
+ public void multiCallback(String aString);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/JavaCallbackServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/JavaCallbackServiceImpl.java
new file mode 100644
index 0000000000..b2af2fa68d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/JavaCallbackServiceImpl.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package callback.service;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Service;
+
+import callback.client.CallbackCallback;
+
+@Service(CallbackService.class)
+/*
+ * Callback service implementation
+ */
+public class JavaCallbackServiceImpl implements CallbackService {
+
+ private CallbackCallback callback;
+
+ @Callback
+ protected void setCallback(CallbackCallback callback) {
+ this.callback = callback;
+ }
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ callback.callbackMessage("Who's There");
+ System.out.println("CallbackServiceImpl response sent");
+ return;
+
+ }
+
+ public void multiCallback(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ callback.callbackIncrement("Who's There 1");
+ System.out.println("CallbackServiceImpl response sent");
+ callback.callbackIncrement("Who's There 2");
+ System.out.println("CallbackServiceImpl response sent");
+ callback.callbackIncrement("Who's There 3");
+ System.out.println("CallbackServiceImpl response sent");
+ return;
+
+ }
+
+ public void noCallback(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ // System.out.println("CallbackServiceImpl No response desired");
+ return;
+
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/OSGiCallbackServiceImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/OSGiCallbackServiceImpl.java
new file mode 100644
index 0000000000..c05a3f52a8
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/callback/service/OSGiCallbackServiceImpl.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 callback.service;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osoa.sca.annotations.Callback;
+
+import callback.client.CallbackCallback;
+
+/*
+ * OSGi Callback service implementation
+ */
+public class OSGiCallbackServiceImpl implements CallbackService, BundleActivator {
+
+ @Callback
+ protected CallbackCallback callback;
+
+
+ private BundleContext bundleContext;
+
+ public void knockKnock(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ callback.callbackMessage("Who's There");
+ System.out.println("CallbackServiceImpl response sent");
+ return;
+
+ }
+
+ public void multiCallback(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ callback.callbackIncrement("Who's There 1");
+ System.out.println("CallbackServiceImpl response sent");
+ callback.callbackIncrement("Who's There 2");
+ System.out.println("CallbackServiceImpl response sent");
+ callback.callbackIncrement("Who's There 3");
+ System.out.println("CallbackServiceImpl response sent");
+ return;
+
+ }
+
+ public void noCallback(String aString) {
+
+ System.out.println("CallbackServiceImpl message received: " + aString);
+ // System.out.println("CallbackServiceImpl No response desired");
+ return;
+
+ }
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ System.out.println("Started OSGiCallbackServiceImpl bundle ");
+
+ this.bundleContext = bc;
+
+ Hashtable serviceProps = new Hashtable();
+ serviceProps.put("component.service.name", "CallbackService/CallbackService");
+ bundleContext.registerService("callback.service.CallbackService", this, serviceProps);
+
+
+ ServiceReference ref= bundleContext.getServiceReference("callback.client.CallbackCallback");
+
+ if (ref != null)
+ callback = (CallbackCallback)bundleContext.getService(ref);
+
+ }
+
+ public void stop(BundleContext bc) {
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalCallback.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalCallback.java
new file mode 100644
index 0000000000..a6202309bd
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/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 conversation.client;
+
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+
+/**
+ * The callback interface used when testing caonversational callbacks
+ *
+ * @version $Rev$ $Date$
+ */
+@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.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClient.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClient.java
new file mode 100644
index 0000000000..af269052c7
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClient.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 conversation.client;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * The client for the conversational itest. Is implemented by clients
+ * offering both stateless and stateful callbacks
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+public interface ConversationalClient {
+
+ public int runConversationFromInjectedReference();
+ 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 int runConversationAgeTimeout();
+ public int runConversationIdleTimeout();
+ public int runConversationPrincipleError();
+
+ public String getCalls();
+ public String getServiceCalls();
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientActivator.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientActivator.java
new file mode 100644
index 0000000000..f74353a6af
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientActivator.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 conversation.client;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+
+import conversation.client.ConversationalCallback;
+import conversation.client.ConversationalClient;
+import conversation.client.ConversationalClientStatefulImpl;
+import conversation.client.ConversationalClientStatelessImpl;
+import conversation.referenceclient.ConversationalReferenceClient;
+import conversation.referenceclient.ConversationalReferenceClientImpl;
+import conversation.service.ConversationalService;
+import conversation.service.ConversationalServiceStatefulImpl;
+import conversation.service.ConversationalServiceStatelessImpl;
+
+/*
+ * OSGi bundle activator for conversation tests
+ */
+public class ConversationalClientActivator implements BundleActivator, ServiceListener {
+
+
+ private BundleContext bundleContext;
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ System.out.println("Started OSGiConversationClientActivator ");
+
+ this.bundleContext = bc;
+
+ bc.addServiceListener(this);
+
+ Hashtable serviceProps;
+
+ serviceProps = new Hashtable();
+
+ serviceProps.put("component.name", "ConversationalStatelessClientStatelessService");
+ Object statelessClientFactory1 =
+ new ConversationalClientServiceFactory(ConversationalClientStatelessImpl.class, bundleContext, 1);
+ bundleContext.registerService(
+ new String[] {ConversationalClient.class.getName(), ConversationalCallback.class.getName()},
+ statelessClientFactory1,
+ serviceProps);
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalStatelessClientStatefulService");
+ Object statelessClientFactory2 =
+ new ConversationalClientServiceFactory(ConversationalClientStatelessImpl.class, bundleContext, 2);
+ bundleContext.registerService(
+ new String[] {ConversationalClient.class.getName(), ConversationalCallback.class.getName()},
+ statelessClientFactory2,
+ serviceProps);
+
+
+ serviceProps.put("component.name", "ConversationalStatefulClientStatelessService");
+ Object statefulClientFactory1 =
+ new ConversationalClientServiceFactory(ConversationalClientStatefulImpl.class, bundleContext, 3);
+ bundleContext.registerService(
+ new String[] {ConversationalClient.class.getName(), ConversationalCallback.class.getName()},
+ statefulClientFactory1,
+ serviceProps);
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalStatefulClientStatefulService");
+ Object statefulClientFactory2 =
+ new ConversationalClientServiceFactory(ConversationalClientStatefulImpl.class, bundleContext, 4);
+ bundleContext.registerService(
+ new String[] {ConversationalClient.class.getName(), ConversationalCallback.class.getName()},
+ statefulClientFactory2,
+ serviceProps);
+
+ serviceProps.put("component.name", "ConversationalReferenceClient");
+ ConversationalReferenceClientImpl refClient = new ConversationalReferenceClientImpl();
+ bundleContext.registerService(ConversationalReferenceClient.class.getName(), refClient, serviceProps);
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalServiceStateful");
+ Object statefulService =
+ new ConversationalClientServiceFactory(ConversationalServiceStatefulImpl.class, bundleContext, 5);
+ bundleContext.registerService(ConversationalService.class.getName(), statefulService, serviceProps);
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalServiceStateless");
+ ConversationalServiceStatelessImpl statelessService = new ConversationalServiceStatelessImpl();
+ bundleContext.registerService(ConversationalService.class.getName(), statelessService, serviceProps);
+
+
+ }
+
+
+
+ public void stop(BundleContext bc) {
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+
+ if (event.getType() == ServiceEvent.REGISTERED) {
+
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientServiceFactory.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientServiceFactory.java
new file mode 100644
index 0000000000..129b903ae9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientServiceFactory.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 conversation.client;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+
+import conversation.client.ConversationalClientStatefulImpl;
+import conversation.client.ConversationalClientStatelessImpl;
+import conversation.referenceclient.ConversationalReferenceClient;
+import conversation.service.ConversationalService;
+
+public class ConversationalClientServiceFactory implements ServiceFactory {
+
+ private Class> clazz;
+ private BundleContext bundleContext;
+ private int serviceNum;
+
+ public ConversationalClientServiceFactory(Class> clazz, BundleContext bundleContext, int serviceNum) {
+ this.clazz = clazz;
+ this.bundleContext = bundleContext;
+ this.serviceNum = serviceNum;
+ }
+
+ public Object getService(Bundle bundle, ServiceRegistration reg) {
+
+
+ try {
+ Object instance = clazz.newInstance();
+
+ ConversationalClientStatelessImpl statelessClient = null;
+ ConversationalClientStatefulImpl statefulClient = null;
+
+ if (serviceNum == 1 || serviceNum == 2) {
+
+ ServiceReference ref = bundleContext.getServiceReference(ConversationalReferenceClient.class.getName());
+ statelessClient = (ConversationalClientStatelessImpl)instance;
+ statelessClient.conversationalReferenceClient =
+ (ConversationalReferenceClient)bundleContext.getService(ref);
+ }
+ if (serviceNum == 1) {
+
+ ServiceReference ref = getServiceReference(ConversationalService.class.getName(),
+ "(component.name=ConversationalServiceStateless)");
+ statelessClient.conversationalService = (ConversationalService)bundleContext.getService(ref);
+
+ }
+
+ if (serviceNum == 2) {
+
+ ServiceReference ref = getServiceReference(ConversationalService.class.getName(),
+ "(component.name=ConversationalServiceStateful)");
+ statelessClient.conversationalService = (ConversationalService)bundleContext.getService(ref);
+
+ }
+
+
+ if (serviceNum == 3 || serviceNum == 4) {
+
+ ServiceReference ref = bundleContext.getServiceReference(ConversationalReferenceClient.class.getName());
+ statefulClient = (ConversationalClientStatefulImpl)instance;
+ statefulClient.conversationalReferenceClient =
+ (ConversationalReferenceClient)bundleContext.getService(ref);
+ }
+ if (serviceNum == 3) {
+
+ ServiceReference ref = getServiceReference(ConversationalService.class.getName(),
+ "(component.name=ConversationalServiceStateless)");
+ statefulClient.conversationalService = (ConversationalService)bundleContext.getService(ref);
+
+ }
+
+ if (serviceNum == 4) {
+
+ ServiceReference ref = getServiceReference(ConversationalService.class.getName(),
+ "(component.name=ConversationalServiceStateful)");
+ statefulClient.conversationalService = (ConversationalService)bundleContext.getService(ref);
+
+ }
+
+ return instance;
+ } catch (Exception e) {
+
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ public void ungetService(Bundle bundle, ServiceRegistration reg, Object obj) {
+ bundle.getBundleContext().ungetService(reg.getReference());
+ }
+
+ private ServiceReference getServiceReference(String name, String filter) throws Exception {
+
+ ServiceReference refs[] = bundleContext.getServiceReferences(name, filter);
+ ServiceReference ref = refs[0];
+ int ranking = 0;
+ if (ref.getProperty(Constants.SERVICE_RANKING) instanceof Integer)
+ ranking = (Integer)ref.getProperty(Constants.SERVICE_RANKING);
+ for (int i = 1; i < refs.length; i++) {
+ int thisranking = 0;
+ if (refs[i].getProperty(Constants.SERVICE_RANKING) instanceof Integer) {
+ thisranking = (Integer)refs[i].getProperty(Constants.SERVICE_RANKING);
+ }
+ if (thisranking > ranking) {
+ ref = refs[i];
+ ranking = thisranking;
+ }
+ }
+
+ return ref;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatefulImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatefulImpl.java
new file mode 100644
index 0000000000..3aedabc29c
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatefulImpl.java
@@ -0,0 +1,254 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package conversation.client;
+
+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.Scope;
+import org.osoa.sca.annotations.Service;
+
+import conversation.referenceclient.ConversationalReferenceClient;
+import conversation.service.ConversationalService;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev$ $Date$
+ */
+
+@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;
+
+ protected ConversationalService conversationalService;
+
+ 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 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 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,");
+ callbackCount = 0;
+ return null;
+ }
+
+ public String getCalls() {
+ return calls.toString();
+ }
+
+ public String getServiceCalls() {
+ return conversationalService.getCalls().toString();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatelessImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatelessImpl.java
new file mode 100644
index 0000000000..b12e094bc1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/client/ConversationalClientStatelessImpl.java
@@ -0,0 +1,253 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package conversation.client;
+
+
+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.Scope;
+import org.osoa.sca.annotations.Service;
+
+import conversation.referenceclient.ConversationalReferenceClient;
+import conversation.service.ConversationalService;
+
+/**
+ * The client for the conversational itest which presents a stateful
+ * callback interface
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Service(interfaces={ConversationalClient.class})
+@Scope("STATELESS")
+public class ConversationalClientStatelessImpl implements ConversationalClient, ConversationalCallback {
+
+ @Context
+ protected ComponentContext componentContext;
+
+ @Reference
+ protected ConversationalService conversationalService;
+
+ @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 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");
+ 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,");
+ 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 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,");
+ return null;
+ }
+
+ public String getCalls() {
+ return calls.toString();
+ }
+
+ public String getServiceCalls() {
+ return conversationalService.getCalls().toString();
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClient.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClient.java
new file mode 100644
index 0000000000..59e128b993
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClient.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 conversation.referenceclient;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.Remotable;
+
+import conversation.service.ConversationalService;
+
+/**
+ * The client that calls into an existing conversation by accepting
+ * a reference to that conversation
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Remotable
+public interface ConversationalReferenceClient {
+
+ public void incrementCount(CallableReference conversationalService);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientActivator.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientActivator.java
new file mode 100644
index 0000000000..ff6f16cba3
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientActivator.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 conversation.referenceclient;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+
+/*
+ * OSGi bundle activator for conversation tests
+ */
+public class ConversationalReferenceClientActivator implements BundleActivator, ServiceListener {
+
+
+ private BundleContext bundleContext;
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ System.out.println("Started OSGiConversationReferenceClientActivator ");
+
+ this.bundleContext = bc;
+
+ bc.addServiceListener(this);
+
+ Hashtable serviceProps;
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalReferenceClient");
+ ConversationalReferenceClientImpl refClient = new ConversationalReferenceClientImpl();
+ bundleContext.registerService(ConversationalReferenceClient.class.getName(), refClient, serviceProps);
+
+ }
+
+
+
+ public void stop(BundleContext bc) {
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+
+ if (event.getType() == ServiceEvent.REGISTERED) {
+
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientImpl.java
new file mode 100644
index 0000000000..4524c6bd3d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/referenceclient/ConversationalReferenceClientImpl.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 conversation.referenceclient;
+
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.annotations.AllowsPassByReference;
+import org.osoa.sca.annotations.Service;
+
+import conversation.service.ConversationalService;
+
+/**
+ * A client component that accepts a reference to an ongoing conversation
+ * and takes part in that conversation
+ *
+ * @version $Rev$ $Date$
+ */
+
+@Service(interfaces={ConversationalReferenceClient.class})
+@AllowsPassByReference
+public class ConversationalReferenceClientImpl implements ConversationalReferenceClient{
+
+ public void incrementCount(CallableReference conversationalService){
+ ConversationalService callableReference = conversationalService.getService();
+
+ callableReference.incrementCount();
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalService.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalService.java
new file mode 100644
index 0000000000..bcd24ef0b1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalService.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package conversation.service;
+
+import org.osoa.sca.annotations.Callback;
+import org.osoa.sca.annotations.Conversational;
+import org.osoa.sca.annotations.EndsConversation;
+import org.osoa.sca.annotations.Remotable;
+
+import conversation.client.ConversationalCallback;
+
+
+/**
+ * The service interface used when testing conversations
+ *
+ * @version $Rev$ $Date$
+ */
+@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();
+
+ public String getCalls();
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceActivator.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceActivator.java
new file mode 100644
index 0000000000..903f8bf229
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceActivator.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 conversation.service;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+
+
+/*
+ * OSGi bundle activator for conversation tests
+ */
+public class ConversationalServiceActivator implements BundleActivator, ServiceListener {
+
+
+ private BundleContext bundleContext;
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ System.out.println("Started OSGiConversationServiceActivator ");
+
+ this.bundleContext = bc;
+
+ bc.addServiceListener(this);
+
+ Hashtable serviceProps;
+
+ serviceProps = new Hashtable();
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalServiceStateful");
+ Object statefulService =
+ new ConversationalServiceFactory(ConversationalServiceStatefulImpl.class);
+ bundleContext.registerService(ConversationalService.class.getName(), statefulService, serviceProps);
+
+ serviceProps = new Hashtable();
+ serviceProps.put("component.name", "ConversationalServiceStateless");
+ ConversationalServiceStatelessImpl statelessService = new ConversationalServiceStatelessImpl();
+ bundleContext.registerService(ConversationalService.class.getName(), statelessService, serviceProps);
+
+
+ }
+
+
+
+ public void stop(BundleContext bc) {
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+
+ if (event.getType() == ServiceEvent.REGISTERED) {
+
+ }
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceFactory.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceFactory.java
new file mode 100644
index 0000000000..43393ff9e9
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceFactory.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 conversation.service;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceRegistration;
+
+
+public class ConversationalServiceFactory implements ServiceFactory {
+
+ private Class> clazz;
+
+ public ConversationalServiceFactory(Class> clazz) {
+ this.clazz = clazz;
+ }
+
+ public Object getService(Bundle bundle, ServiceRegistration reg) {
+
+ try {
+ return clazz.newInstance();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ }
+
+ public void ungetService(Bundle bundle, ServiceRegistration reg, Object obj) {
+ bundle.getBundleContext().ungetService(reg.getReference());
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatefulImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatefulImpl.java
new file mode 100644
index 0000000000..ec30d641ac
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatefulImpl.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 conversation.service;
+
+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;
+
+import conversation.client.ConversationalCallback;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev$ $Date$
+ */
+@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();
+ }
+
+ public String getCalls() {
+ return calls.toString();
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatelessImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatelessImpl.java
new file mode 100644
index 0000000000..34baca71d1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/conversation/service/ConversationalServiceStatelessImpl.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 conversation.service;
+
+import java.util.HashMap;
+
+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;
+
+import conversation.client.ConversationalCallback;
+
+
+/**
+ * The service used when testing stateful conversations
+ *
+ * @version $Rev$ $Date$
+ */
+@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();
+ }
+
+ public String getCalls() {
+ return calls.toString();
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/Greetings.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/Greetings.java
new file mode 100644
index 0000000000..9285c0a8d5
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/Greetings.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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface Greetings {
+
+
+ public String[] getGreetingsFromJava(String[] s);
+
+ public String[] getGreetingsFromOSGi(String[] s);
+
+ public String[] getModifiedGreetingsFromJava(String[] s);
+
+ public String[] getModifiedGreetingsFromOSGi(String[] s);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/HelloWorld.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/HelloWorld.java
new file mode 100644
index 0000000000..16d0eae990
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/HelloWorld.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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface HelloWorld {
+
+ public String getGreetings(String s);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaGreetingsComponent.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaGreetingsComponent.java
new file mode 100644
index 0000000000..3d0e045225
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaGreetingsComponent.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 helloworld;
+
+import org.osoa.sca.annotations.AllowsPassByReference;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(Greetings.class)
+@Scope("COMPOSITE")
+public class JavaGreetingsComponent implements Greetings {
+
+ private Greetings greetingsService;
+
+ @Reference
+ public void setGreetingsService(Greetings greetingsService) {
+ this.greetingsService = greetingsService;
+ }
+
+
+ public String[] getGreetingsFromJava(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = "Hello " + s[i] + "(From Java)";
+ }
+
+ return greetingsService.getGreetingsFromJava(s);
+ }
+
+ public String[] getGreetingsFromOSGi(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = s[i] + "(From Java)";
+ }
+
+ return s;
+ }
+
+ @AllowsPassByReference
+ public String[] getModifiedGreetingsFromJava(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = "Hello " + s[i] + "(From Java)";
+ }
+
+ return greetingsService.getModifiedGreetingsFromJava(s);
+ }
+
+ @AllowsPassByReference
+ public String[] getModifiedGreetingsFromOSGi(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = s[i] + "(From Java)";
+ }
+
+ return s;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaHelloWorldComponent.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaHelloWorldComponent.java
new file mode 100644
index 0000000000..c055aee142
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/JavaHelloWorldComponent.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 helloworld;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+
+@Scope("COMPOSITE")
+public class JavaHelloWorldComponent implements HelloWorld {
+
+ public helloworld.ws.HelloWorld helloWorldWS;
+
+ @Reference
+ public void setHelloWorldWS(helloworld.ws.HelloWorld helloWorldWS) {
+ this.helloWorldWS = helloWorldWS;
+ }
+
+ public String getGreetings(String s) {
+ return helloWorldWS.getGreetings(s);
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiGreetingsImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiGreetingsImpl.java
new file mode 100644
index 0000000000..661eb5a8cb
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiGreetingsImpl.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 helloworld;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.BundleActivator;
+import org.osoa.sca.annotations.AllowsPassByReference;
+
+
+public class OSGiGreetingsImpl implements Greetings, ServiceListener, BundleActivator {
+
+ private Greetings greetingsService;
+
+ private BundleContext bundleContext;
+
+ public String[] getGreetingsFromOSGi(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = "Hello " + s[i] + "(From OSGi)";
+ }
+
+ return greetingsService.getGreetingsFromOSGi(s);
+ }
+
+ public String[] getGreetingsFromJava(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = s[i] + "(From OSGi)";
+ }
+
+ return s;
+ }
+
+ @AllowsPassByReference
+ public String[] getModifiedGreetingsFromOSGi(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = "Hello " + s[i] + "(From OSGi)";
+ }
+
+ return greetingsService.getModifiedGreetingsFromOSGi(s);
+ }
+
+ @AllowsPassByReference
+ public String[] getModifiedGreetingsFromJava(String s[]) {
+ for (int i = 0; i < s.length; i++) {
+ s[i] = s[i] + "(From OSGi)";
+ }
+
+ return s;
+ }
+
+ public void start(BundleContext bc) {
+
+ System.out.println("Started OsgiGreetingsImpl bundle ");
+
+ this.bundleContext = bc;
+
+ Hashtable serviceProps = new Hashtable();
+ serviceProps.put("component.service.name", "OSGiGreetingsComponent/Greetings");
+ bundleContext.registerService("helloworld.Greetings", this, serviceProps);
+
+
+ ServiceReference ref = bundleContext.getServiceReference("helloworld.Greetings");
+ if (ref != null)
+ greetingsService = (helloworld.Greetings)bundleContext.getService(ref);
+ else {
+ try {
+ String filter = "(objectclass=helloworld.Greetings)";
+ this.bundleContext.addServiceListener(this, filter);
+
+ } catch (InvalidSyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ public void stop(BundleContext bc) {
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+ try {
+ if (event.getType() == ServiceEvent.REGISTERED) {
+ ServiceReference ref = event.getServiceReference();
+ greetingsService = (helloworld.Greetings) bundleContext.getService(ref);
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiHelloWorldImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiHelloWorldImpl.java
new file mode 100644
index 0000000000..0588da9a85
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/OSGiHelloWorldImpl.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 helloworld;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.BundleActivator;
+
+
+public class OSGiHelloWorldImpl implements HelloWorld, ServiceListener, BundleActivator {
+
+ public helloworld.ws.HelloWorld helloWorldWS;
+
+ private BundleContext bundleContext;
+
+ public String getGreetings(String s) {
+ return helloWorldWS.getGreetings(s);
+ }
+
+
+ public void start(BundleContext bc) {
+
+ System.out.println("Started OsgiHelloWorldImpl bundle ");
+
+ this.bundleContext = bc;
+
+ Hashtable serviceProps = new Hashtable();
+ serviceProps.put("component.name", "HelloWorldComponent");
+ bundleContext.registerService("helloworld.HelloWorld", this, serviceProps);
+
+ ServiceReference ref = bundleContext.getServiceReference("helloworld.ws.HelloWorld");
+ if (ref != null)
+ helloWorldWS = (helloworld.ws.HelloWorld)bundleContext.getService(ref);
+ else {
+ try {
+ String filter = "(objectclass=helloworld.ws.HelloWorld)";
+ this.bundleContext.addServiceListener(this, filter);
+
+ } catch (InvalidSyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ public void stop(BundleContext bc) {
+ }
+
+ public void serviceChanged(ServiceEvent event) {
+ try {
+ if (event.getType() == ServiceEvent.REGISTERED) {
+ ServiceReference ref = event.getServiceReference();
+ helloWorldWS = (helloworld.ws.HelloWorld) bundleContext.getService(ref);
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/HelloWorld.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/HelloWorld.java
new file mode 100644
index 0000000000..039a214856
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/HelloWorld.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 helloworld.ws;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface HelloWorld {
+
+ public String getGreetings(String s);
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/HelloWorldService.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/HelloWorldService.java
new file mode 100644
index 0000000000..4a3cd4aed2
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/helloworld/ws/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.ws;
+
+public class HelloWorldService implements HelloWorld {
+
+ public String getGreetings(String s) {
+ return "Hello " + s;
+ }
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteComponentImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteComponentImpl.java
new file mode 100644
index 0000000000..2251bf5be6
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteComponentImpl.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 stockquote;
+
+import java.util.Dictionary;
+
+import org.osgi.service.component.ComponentContext;
+import org.osoa.sca.annotations.Property;
+
+/**
+ * Declarative Stock quote with configurable properties.
+ */
+public class OSGiStockQuoteComponentImpl implements StockQuote {
+
+ @Property
+ public double exchangeRate;
+
+ private String currency;
+
+
+ public double configExchangeRate;
+ public String configCurrency;
+
+ @Property
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+ public double getQuote(String ticker) throws Exception {
+
+ if (exchangeRate == 2.0 && !"USD".equals(currency)) {
+ throw new RuntimeException("Property exchangeRate not set correctly, exchangeRate= " +
+ exchangeRate + " currency=" + currency);
+ }
+ if (exchangeRate == 1.48 && !"EURO".equals(currency)) {
+ throw new RuntimeException("Property exchangeRate not set correctly, exchangeRate= " +
+ exchangeRate + " currency=" + currency);
+ }
+
+ if (configExchangeRate == 2.0 && !"USD".equals(configCurrency)) {
+ throw new RuntimeException("ConfigAdmin Property exchangeRate not set correctly, exchangeRate= " +
+ configExchangeRate + " currency=" + configCurrency);
+ }
+ if (configExchangeRate == 1.48 && !"EURO".equals(configCurrency)) {
+ throw new RuntimeException("Property configExchangeRate not set correctly, exchangeRate= " +
+ configExchangeRate + " currency=" + configCurrency);
+ }
+
+ return 52.81 * exchangeRate;
+
+ }
+
+ protected void activate(ComponentContext context){
+ System.out.println("Activated OSGiStockQuoteComponentImpl bundle ");
+ Dictionary props = context.getProperties();
+ Object prop = props.get("currency");
+ if (prop instanceof String[]&& ((String [])prop).length > 0)
+ configCurrency = ((String [])prop)[0];
+ prop = props.get("exchangeRate");
+ if (prop instanceof Double[]&& ((Double [])prop).length > 0)
+ configExchangeRate = (double)((Double [])prop)[0];
+ }
+
+ protected void deactivate(ComponentContext context){
+ System.out.println("Deactivated OSGiStockQuoteComponentImpl bundle ");
+ }
+
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteFactoryImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteFactoryImpl.java
new file mode 100644
index 0000000000..e2d25bf47d
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteFactoryImpl.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package stockquote;
+
+import java.util.Hashtable;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceFactory;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ *
+ * OSGi service factory where service has configurable properties
+ * Only property injection is tested. ConfigurationAdmin is not used.
+ *
+ */
+public class OSGiStockQuoteFactoryImpl implements BundleActivator, ServiceFactory {
+
+
+ private BundleContext bundleContext;
+
+
+ public void start(BundleContext bc) throws Exception {
+
+ bundleContext = bc;
+
+ Hashtable props = new Hashtable();
+ bc.registerService(StockQuote.class.getName(), this, props);
+
+ }
+
+ public void stop(BundleContext bc) throws Exception {
+ }
+
+
+ public Object getService(Bundle bundle, ServiceRegistration registration) {
+ return new OSGiStockQuoteImpl(bundleContext);
+ }
+
+
+ public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
+
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteImpl.java
new file mode 100644
index 0000000000..f2ae804ad1
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/OSGiStockQuoteImpl.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 stockquote;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osoa.sca.annotations.Property;
+
+/**
+ *
+ * Stock quote with configurable properties.
+ *
+ */
+public class OSGiStockQuoteImpl implements StockQuote, BundleActivator {
+
+ public String pid;
+
+ @Property
+ public double exchangeRate;
+
+ private String currency;
+
+ private BundleContext bundleContext;
+
+ public OSGiStockQuoteImpl() {
+ this.pid = "stockQuote";
+ }
+
+ protected OSGiStockQuoteImpl(BundleContext bc) {
+ this.bundleContext = bc;
+ }
+
+ @Property
+ public void setCurrency(String currency) {
+ this.currency = currency;
+ }
+
+
+ private void checkProperties() throws Exception {
+
+ if (exchangeRate == 2.0 && !"USD".equals(currency)) {
+ throw new RuntimeException("Property exchangeRate not set correctly, exchangeRate= " +
+ exchangeRate + " currency=" + currency);
+ }
+
+ if (exchangeRate == 1.48 && !"EURO".equals(currency)) {
+ throw new RuntimeException("Property exchangeRate not set correctly, exchangeRate= " +
+ exchangeRate + " currency=" + currency);
+ }
+
+ ServiceReference configAdminReference = bundleContext.getServiceReference("org.osgi.service.cm.ConfigurationAdmin");
+ if (configAdminReference != null && pid != null ) {
+
+ ConfigurationAdmin cm = (ConfigurationAdmin)bundleContext.getService(configAdminReference);
+
+ Configuration config = cm.getConfiguration("stockQuote", null);
+
+ Dictionary props = config.getProperties();
+
+ if (exchangeRate != (double)(Double)props.get("exchangeRate")) {
+ throw new Exception("Config Property exchangeRate not set correctly, expected "
+ + props.get("exchangeRate") + " got " + exchangeRate);
+ }
+
+ if (!currency.equals(props.get("currency"))) {
+ throw new Exception("Config Property currency not set correctly, expected "
+ + props.get("currency") + " got " + currency);
+ }
+ }
+
+ }
+
+ public double getQuote(String ticker) throws Exception {
+
+ checkProperties();
+
+ return 52.81 * exchangeRate;
+
+ }
+
+ public void start(BundleContext bc) throws Exception {
+
+ bundleContext = bc;
+
+ Hashtable props = new Hashtable();
+ props.put("service.pid", "stockQuote");
+
+ bc.registerService(StockQuote.class.getName(), this, props);
+
+ }
+
+ public void stop(BundleContext bc) throws Exception {
+ }
+
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/StockQuote.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/StockQuote.java
new file mode 100644
index 0000000000..a47f68c579
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/stockquote/StockQuote.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 stockquote;
+
+/**
+ *
+ * Stock Quote interface
+ *
+ */
+public interface StockQuote {
+
+ public double getQuote(String ticker) throws Exception ;
+
+}
diff --git a/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/supplychain/OSGiBundleImpl.java b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/supplychain/OSGiBundleImpl.java
new file mode 100644
index 0000000000..25d7bcf2ff
--- /dev/null
+++ b/tags/java/sca/1.0.1-RC4/itest/osgi-implementation/src/main/java/supplychain/OSGiBundleImpl.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 supplychain;
+
+
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceEvent;
+import org.osgi.framework.ServiceListener;
+import org.osgi.framework.ServiceReference;
+
+
+/**
+ * This class implements the Customer service component.
+ */
+public class OSGiBundleImpl implements ServiceListener, BundleActivator {
+
+
+ String name;
+
+ String[] references;
+ Class>[] referenceClasses;
+ Field[] referenceFields;
+ String[] referenceFilters;
+
+ Class myClass;
+ ArrayList serviceNames = new ArrayList();
+ ArrayList