summaryrefslogtreecommitdiffstats
path: root/sandbox/slaws/bank-challenge/bank-contribution
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/slaws/bank-challenge/bank-contribution')
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/pom.xml50
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java40
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java143
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java58
-rw-r--r--sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java52
-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
9 files changed, 39 insertions, 339 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/BankService.java b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java
deleted file mode 100644
index bc13dfd21d..0000000000
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/BankService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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 java.util.List;
-
-import org.oasisopen.sca.annotation.Remotable;
-
-/**
- * The Bank service interface.
- */
-@Remotable
-public interface BankService {
-
- String createAccount(String customerName);
-
- Statement getStatement(String accountID);
-
- void buyEquity(String accountID, String equityCode, int number);
- void sellEquity(String accountID, String equityCode, int number);
-
- StockQuote getStockQuote(String accountID, String equityCode);
- List<StockQuote> getAllStockQuotes(String accountID);
-}
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java
deleted file mode 100644
index 97439736e1..0000000000
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/Statement.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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 java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-
-/**
- * A stock quote
- */
-public class Statement implements Serializable {
-
- private String customerName;
- private String accountID;
- private long cashBalance;
- private List<StockHolding> stockHoldings;
- private List<String> transactions = new ArrayList<String>();
-
- public Statement(){
- if (this.stockHoldings == null){
- this.stockHoldings = new ArrayList<StockHolding>();
- }
- }
-
- public Statement(String customerName, String accountID, long cashBalance, List<StockHolding> stockHoldings){
- this.customerName = customerName;
- this.accountID = accountID;
- this.cashBalance = cashBalance;
- this.stockHoldings = stockHoldings;
-
- if (this.accountID == null){
- this.accountID = UUID.randomUUID().toString();
- }
-
- if (this.stockHoldings == null){
- this.stockHoldings = new ArrayList<StockHolding>();
- }
- }
-
- public String getCustomerName() {
- return customerName;
- }
-
- public String getAccountID() {
- return accountID;
- }
-
- public long getCashBalance() {
- return cashBalance;
- }
-
- public void creditCashBalance(long credit, String reason) {
- this.cashBalance += credit;
- transactions.add("credit " + credit + " : " + reason);
- }
-
- public void debitCashBalance(long debit, String reason) {
- this.cashBalance -= debit;
- transactions.add("debit " + debit + " : " + reason);
- }
-
- public List<StockHolding> getStockHolding() {
- return stockHoldings;
- }
-
- public void creditStockHolding(StockHolding stock){
- stockHoldings.add(stock);
- debitCashBalance(stock.getPrice() * stock.getNumberHeld(),
- "bought " + stock.getNumberHeld() + " of " + stock.getStockCode() + " at " + stock.getPrice());
- }
-
- public void debitStockHolding(StockHolding stock){
- int numberToSell = stock.getNumberHeld();
- int numberSold = 0;
- List<StockHolding> toRemove = new ArrayList<StockHolding>();
-
- for (StockHolding stockHolding : stockHoldings){
- if (stockHolding.getStockCode().equals(stock.getStockCode())){
- if (stockHolding.getNumberHeld() > numberToSell){
- stockHolding.setNumberHeld(stockHolding.getNumberHeld() - numberToSell);
- numberSold += numberToSell;
- numberToSell = 0;
- break;
- } else {
- numberSold += stockHolding.getNumberHeld();
- numberToSell -= stockHolding.getNumberHeld();
- stockHolding.setNumberHeld(0);
- toRemove.add(stockHolding);
- }
- }
- }
-
- stockHoldings.removeAll(toRemove);
-
- creditCashBalance(stock.getPrice() * numberSold,
- "sold " + numberSold + " of " + stock.getStockCode() + " at " + stock.getPrice());
- }
-
- public List<String> getTransactions() {
- return transactions;
- }
-
- @Override
- public String toString() {
- String returnString =
- "customer name = " + customerName +
- "\naccount Id = " + accountID +
- "\nbalance = " + cashBalance +
- "\nequities = \n";
-
- for (StockHolding stock : stockHoldings){
- returnString += " stock " + stock.getStockCode() + " number held = " + stock.getNumberHeld() + "\n";
- }
-
- returnString +=
- "transactions = \n";
-
- for(String transaction : transactions){
- returnString += " " + transaction + "\n";
- }
-
- return returnString;
- }
-}
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java
deleted file mode 100644
index 8bd0afd2be..0000000000
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockHolding.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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 java.io.Serializable;
-
-/**
- * A stock quote
- */
-public class StockHolding implements Serializable {
-
- private String stockCode;
- private int numberHeld;
- private long price;
-
- public StockHolding(String stockCode, int numberHeld, long price){
- this.stockCode = stockCode;
- this.numberHeld = numberHeld;
- this.price = price;
- }
-
- public String getStockCode() {
- return stockCode;
- }
-
- public int getNumberHeld() {
- return numberHeld;
- }
-
- public void setNumberHeld(int numberHeld) {
- this.numberHeld = numberHeld;
- }
-
- public long getPrice() {
- return price;
- }
-
- @Override
- public String toString() {
- return stockCode + " - number=" + numberHeld + " - price=" + price;
- }
-}
diff --git a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java b/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java
deleted file mode 100644
index 3bec8019b7..0000000000
--- a/sandbox/slaws/bank-challenge/bank-contribution/src/main/java/bank/StockQuote.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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 java.io.Serializable;
-
-/**
- * A stock quote
- */
-public class StockQuote implements Serializable {
-
- private String stockCode;
- private long stockQuote;
-
- public StockQuote(String stockCode, long stockQuote){
- this.stockCode = stockCode;
- this.stockQuote = stockQuote;
- }
-
- public String getStockCode() {
- return stockCode;
- }
-
- public long getStockQuote() {
- return stockQuote;
- }
-
- public void setStockQuote(long stockQuote) {
- this.stockQuote = stockQuote;
- }
-
- @Override
- public String toString() {
- return stockCode + " - " + stockQuote;
- }
-}
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