summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/pom.xml50
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/impl/BankServiceImpl.java27
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/Bank.composite2
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/META-INF/sca-contribution.xml1
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/test/java/test/BankTestCase.java5
-rw-r--r--sandbox/slaws/bank-challenge/client-sl-contribution/pom.xml92
-rw-r--r--sandbox/slaws/bank-challenge/client-sl-contribution/src/main/java/client/impl/ClientImpl.java75
-rw-r--r--sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/Client.composite30
-rw-r--r--sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/META-INF/sca-contribution.xml24
-rw-r--r--sandbox/slaws/bank-challenge/client-sl-contribution/src/test/java/test/BankClientTestCase.java61
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/pom.xml86
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java (renamed from sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java)0
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java32
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java (renamed from sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java)0
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java (renamed from sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java)0
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java (renamed from sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java)0
-rw-r--r--sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml23
-rw-r--r--sandbox/slaws/bank-challenge/launcher/pom.xml92
-rw-r--r--sandbox/slaws/bank-challenge/launcher/src/main/java/launch/BankChallengeLauncher.java66
-rw-r--r--sandbox/slaws/bank-challenge/pom.xml1
20 files changed, 621 insertions, 46 deletions
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/pom.xml b/sandbox/slaws/bank-challenge/bank-contribution/pom.xml
index a4bdc9a4f1..2ee8455d1e 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/pom.xml
+++ b/sandbox/slaws/bank-challenge/bank-contribution/pom.xml
@@ -25,9 +25,9 @@
<version>2.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
- <artifactId>sandbox-bank-challenge</artifactId>
- <name>Apache Tuscany SCA Sandbox Bank Challenge</name>
- <packaging>war</packaging>
+ <artifactId>sandbox-bank-contribution</artifactId>
+ <name>Apache Tuscany SCA Sandbox Bank Contribution</name>
+ <packaging>jar</packaging>
<dependencies>
@@ -77,48 +77,16 @@
<version>4.8.1</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>sandbox-common-contribution</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
<build>
<finalName>${artifactId}</finalName>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.4</version>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-resource</goal>
- </goals>
- <configuration>
- <resources>
- <resource>
- <directory>src/wsimportout</directory>
- </resource>
- <resource>
- <directory>src/wsgenout</directory>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- <configuration>
- <archive>
- <manifest>
- <mainClass>calculator.CalculatorClient</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- </plugins>
</build>
</project>
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/impl/BankServiceImpl.java b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/impl/BankServiceImpl.java
index 9b49f39ef1..a4e7ee8de2 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/impl/BankServiceImpl.java
+++ b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/impl/BankServiceImpl.java
@@ -27,6 +27,7 @@ import org.oasisopen.sca.annotation.Scope;
import org.oasisopen.sca.annotation.Service;
import bank.BankService;
+import bank.ChallengeControl;
import bank.Statement;
import bank.StockHolding;
import bank.StockQuote;
@@ -34,9 +35,9 @@ import bank.StockQuote;
/**
* An implementation of the Bank service.
*/
-@Service(BankService.class)
+@Service({BankService.class, ChallengeControl.class})
@Scope("COMPOSITE")
-public class BankServiceImpl implements BankService {
+public class BankServiceImpl implements BankService, ChallengeControl {
protected int initialCredit = 1000;
protected int overdrawnCost = 1;
@@ -72,7 +73,7 @@ public class BankServiceImpl implements BankService {
}
}
- // public interface
+ // BankService service implementation
public String createAccount(String customerName) {
for (Statement statement : accounts){
@@ -168,6 +169,26 @@ public class BankServiceImpl implements BankService {
return stockQuote;
}
+ // ChallengeControl service implmentation
+
+ public void start() {
+
+ }
+
+ public void increment() {
+
+ }
+
+ public void stop() {
+ System.out.println("Customer report");
+ System.out.println("===============");
+
+ for(Statement account : accounts){
+ System.out.println("\n");
+ System.out.println(account);
+ }
+ }
+
// private functions
private void updateStockPrices(){
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/Bank.composite b/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/Bank.composite
index 60919c0bfe..e774169dc2 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/Bank.composite
+++ b/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/Bank.composite
@@ -26,6 +26,8 @@
<implementation.java class="bank.impl.BankServiceImpl"/>
<service name="BankService">
</service>
+ <service name="ChallengeControl">
+ </service>
</component>
</composite>
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/META-INF/sca-contribution.xml b/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/META-INF/sca-contribution.xml
index 1bc342a9af..1c475cae94 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/META-INF/sca-contribution.xml
+++ b/sandbox/slaws/bank-challenge/bank-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -20,4 +20,5 @@
<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:sample="http://banking-challenge">
<deployable composite="sample:Bank"/>
+ <import.java package="bank"/>
</contribution> \ No newline at end of file
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/test/java/test/BankTestCase.java b/sandbox/slaws/bank-challenge/bank-contribution/src/test/java/test/BankTestCase.java
index cbfa6f815f..c3c2f1391e 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/test/java/test/BankTestCase.java
+++ b/sandbox/slaws/bank-challenge/bank-contribution/src/test/java/test/BankTestCase.java
@@ -38,8 +38,9 @@ public class BankTestCase{
@BeforeClass
public static void setUpBeforeClass() throws Exception {
- node = NodeFactory.newInstance().createNode((String)null, new String[] {"target/classes"}).start();
- bankService = node.getService(BankService.class, "BankServiceComponent");
+ node = NodeFactory.newInstance().createNode((String)null, new String[] {"target/classes"});
+ node.start();
+ bankService = node.getService(BankService.class, "BankServiceComponent/BankService");
}
@AfterClass
diff --git a/sandbox/slaws/bank-challenge/client-sl-contribution/pom.xml b/sandbox/slaws/bank-challenge/client-sl-contribution/pom.xml
new file mode 100644
index 0000000000..7b46a138cb
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/client-sl-contribution/pom.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <artifactId>sandbox-bank-client-sl-contribution</artifactId>
+ <name>Apache Tuscany SCA Sandbox Bank Client SL Contribution</name>
+ <packaging>jar</packaging>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-webapp</artifactId>
+ <version>1.5.1</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>sandbox-common-contribution</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/java/client/impl/ClientImpl.java b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/java/client/impl/ClientImpl.java
new file mode 100644
index 0000000000..ab8b4de1b4
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/java/client/impl/ClientImpl.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 client.impl;
+
+import java.util.List;
+
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
+import org.oasisopen.sca.annotation.Service;
+
+import bank.BankService;
+import bank.ChallengeControl;
+import bank.Statement;
+import bank.StockHolding;
+import bank.StockQuote;
+
+/**
+ * An implementation of the Bank service.
+ */
+@Service(ChallengeControl.class)
+@Scope("COMPOSITE")
+public class ClientImpl implements ChallengeControl {
+
+ @Reference
+ protected BankService bankService;
+
+ private String customerName = "SL";
+ private String accountID;
+
+ public ClientImpl(){
+ }
+
+ public void start() {
+ System.out.println("Starting bank client for " + customerName);
+ accountID = bankService.createAccount(customerName);
+ System.out.println("Account ID for " + customerName + " = " + accountID);
+ }
+
+ public void increment() {
+ System.out.println("Increment " + customerName);
+
+ List<StockQuote> stockQuotes = bankService.getAllStockQuotes(accountID);
+
+ for (StockQuote stock : stockQuotes){
+ bankService.buyEquity(accountID, stock.getStockCode(), 1);
+ }
+
+ System.out.println("My statement " + bankService.getStatement(accountID));
+ }
+
+ public void stop() {
+ System.out.println("Stopping bank client for " + customerName);
+ Statement statement = bankService.getStatement(accountID);
+
+ for (StockHolding holding : statement.getStockHolding()){
+ bankService.sellEquity(accountID, holding.getStockCode(), holding.getNumberHeld());
+ }
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/Client.composite b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/Client.composite
new file mode 100644
index 0000000000..0d1ce9223a
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/Client.composite
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://banking-challenge"
+ xmlns:sample="http://banking-challenge"
+ name="ClientSL">
+
+ <component name="ClientComponentSL">
+ <implementation.java class="client.impl.ClientImpl"/>
+ <reference name="bankService" target="BankServiceComponent"/>
+ </component>
+
+</composite>
diff --git a/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/META-INF/sca-contribution.xml b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..4906cd95b5
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/client-sl-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://banking-challenge">
+ <deployable composite="sample:ClientSL"/>
+ <import.java package="bank"/>
+</contribution> \ No newline at end of file
diff --git a/sandbox/slaws/bank-challenge/client-sl-contribution/src/test/java/test/BankClientTestCase.java b/sandbox/slaws/bank-challenge/client-sl-contribution/src/test/java/test/BankClientTestCase.java
new file mode 100644
index 0000000000..a6cec45ec4
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/client-sl-contribution/src/test/java/test/BankClientTestCase.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package test;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import bank.ChallengeControl;
+
+/**
+ * Test the Bank service component.
+ */
+public class BankClientTestCase{
+ private static Node node;
+ private static ChallengeControl bankClient;
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ node = NodeFactory.newInstance().createNode(new Contribution("Common", "../common-contribution/target/classes"),
+ new Contribution("Bank", "../bank-contribution/target/classes"),
+ new Contribution("SLClient", "../client-sl-contribution/target/classes"));
+ node.start();
+ bankClient = node.getService(ChallengeControl.class, "ClientComponentSL");
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ node.stop();
+ }
+
+ @Test
+ public void testClient() throws Exception {
+ System.out.println("Start client");
+ bankClient.start();
+ bankClient.increment();
+ System.out.println("Stop client");
+ bankClient.stop();
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/common-contribution/pom.xml b/sandbox/slaws/bank-challenge/common-contribution/pom.xml
new file mode 100644
index 0000000000..8c8f8b9704
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/pom.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <artifactId>sandbox-common-contribution</artifactId>
+ <name>Apache Tuscany SCA Sandbox Common Contribution</name>
+ <packaging>jar</packaging>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-webapp</artifactId>
+ <version>1.5.1</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java
index bc13dfd21d..bc13dfd21d 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/BankService.java
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.java
new file mode 100644
index 0000000000..c03f9a2c9c
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/ChallengeControl.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 bank;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The Bank service interface.
+ */
+@Remotable
+public interface ChallengeControl {
+
+ void start();
+ void increment();
+ void stop();
+}
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java
index 97439736e1..97439736e1 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/Statement.java
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java
index 8bd0afd2be..8bd0afd2be 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockHolding.java
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java
index 3bec8019b7..3bec8019b7 100644
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/java/bank/StockQuote.java
diff --git a/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml b/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..d96d586130
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/common-contribution/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://banking-challenge">
+ <export.java package="bank"/>
+</contribution> \ No newline at end of file
diff --git a/sandbox/slaws/bank-challenge/launcher/pom.xml b/sandbox/slaws/bank-challenge/launcher/pom.xml
new file mode 100644
index 0000000000..1aa5f0ae1f
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/launcher/pom.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <artifactId>sandbox-bank-challenge-launcher</artifactId>
+ <name>Apache Tuscany SCA Sandbox Bank Challenge Launcher</name>
+ <packaging>war</packaging>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.axis2</groupId>
+ <artifactId>axis2-webapp</artifactId>
+ <version>1.5.1</version>
+ <type>war</type>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>sandbox-common-contribution</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>${artifactId}</finalName>
+ </build>
+</project>
diff --git a/sandbox/slaws/bank-challenge/launcher/src/main/java/launch/BankChallengeLauncher.java b/sandbox/slaws/bank-challenge/launcher/src/main/java/launch/BankChallengeLauncher.java
new file mode 100644
index 0000000000..c643b64814
--- /dev/null
+++ b/sandbox/slaws/bank-challenge/launcher/src/main/java/launch/BankChallengeLauncher.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 launch;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+
+import bank.ChallengeControl;
+
+public class BankChallengeLauncher {
+
+ public static void main(String[] args) throws Exception {
+ Node node = NodeFactory.newInstance().createNode(new Contribution("Bank", "../bank-contribution/target/classes"),
+ new Contribution("Common", "../common-contribution/target/classes"),
+ new Contribution("SLClient", "../client-sl-contribution/target/classes"));
+ node.start();
+
+ List<ChallengeControl> bankClients = new ArrayList<ChallengeControl>();
+
+ bankClients.add(node.getService(ChallengeControl.class, "ClientComponentSL"));
+
+ // start all clients
+ Iterator<ChallengeControl> bankClientsIterator = bankClients.iterator();
+ while(bankClientsIterator.hasNext()){
+ bankClientsIterator.next().start();
+ }
+
+ for(int i=0; i<10; i++){
+ // increment all clients
+ bankClientsIterator = bankClients.iterator();
+ while(bankClientsIterator.hasNext()){
+ bankClientsIterator.next().increment();
+ }
+ }
+
+ // stop all clients
+ bankClientsIterator = bankClients.iterator();
+ while(bankClientsIterator.hasNext()){
+ bankClientsIterator.next().stop();
+ }
+
+ node.stop();
+ }
+}
diff --git a/sandbox/slaws/bank-challenge/pom.xml b/sandbox/slaws/bank-challenge/pom.xml
index ffe45c0d26..55b0e89d62 100644
--- a/sandbox/slaws/bank-challenge/pom.xml
+++ b/sandbox/slaws/bank-challenge/pom.xml
@@ -43,6 +43,7 @@
<activeByDefault>true</activeByDefault>
</activation>
<modules>
+ <module>common-contribution</module>
<module>bank-contribution</module>
<module>client-sl-contribution</module>
<module>launcher</module>