summaryrefslogtreecommitdiffstats
path: root/java/sca
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-13 11:24:14 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-13 11:24:14 +0000
commita547b84aa11668a8d8a4a9b99442d95a586d8de8 (patch)
treef61f85816a87e2f8112a7fbc2333dc7de4bf5282 /java/sca
parent76350b074c8ef62ba4f1d95ece7bc43921ea9e4b (diff)
TUSCANY-2543: apply patch from Ramkumar Ramalingam to Demostrate Explicit/Implicit services, references in Spring BigBank Sample
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@685520 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--java/sca/samples/simple-bigbank-spring/README73
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java3
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java99
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite9
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite33
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite2
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml28
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml33
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF4
-rw-r--r--java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java27
10 files changed, 191 insertions, 120 deletions
diff --git a/java/sca/samples/simple-bigbank-spring/README b/java/sca/samples/simple-bigbank-spring/README
index 900a006141..bb44d63719 100644
--- a/java/sca/samples/simple-bigbank-spring/README
+++ b/java/sca/samples/simple-bigbank-spring/README
@@ -1,25 +1,74 @@
Spring Bigbank Sample
-=================
-This sample implements a simple a version of the BigBank scenrio used in
-various places in the SCA specification documents.
+======================
+This sample is made of 3 modules that represent the different aspects of a fictitious banking application.
-The README in the samples directory (the directory above this) provides
-general instructions about building and running samples. Take a look there
-first.
+To run the simple-bigbank-spring sample you need to first run spring-bigbank-calculator, spring-bigbank-checkaccount and spring-bigbank-stockquote composites.
+This will bring up Tuscany runtime and load the three applications and make them available as services.
+Bigbank-Spring is dependent on these services.
-If you just want to run it to see what happens open a command prompt, navigate
-to this sample directory and do:
+This demo uses ant. This is just one way of running this demo.
+Start Spring-Bigbank-calculator Composite
+-----------------------------------------
+
+Spring-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 spring-bigbank-calculator composite and make it available as a service for this demo do the following:
+
+cd spring-bigbank-calculator
+ant compile
ant run
-OR if you don't have ant, on Windows do
+.. 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 Spring-Bigbank-checkaccount Composite
+-------------------------------------------
+
+This contains all artifacts that deal with the account management within the bigbank. The services offered by the bigbank-account module are used by the bigbank.
+
+cd spring-bigbank-checkaccount
+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 Spring-Bigbank-stockquote Composite
+-----------------------------------------
+
+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 spring-bigbank-stockquote
+ant compile
+ant run
+
+.. Leave the server running
+
+Start Spring Bigbank
+--------------------
+This contains all artifacts that make up the bigbank application. This is the application that the end user interacts with
-java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-simple-bigbank-spring.jar bigbank.client.BigBankClient
+Start spring-bigbank in the following way:
-and on *nix do
+i ) Compile the spring-bigbank as follows :
+
+ cd simple-bigbank-spring
+ ant compile
+
+ii) Now start the bigbank service as follows :
+
+ cd bigbank
+ ant compile
+ ant run
-java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-simple-bigbank-spring.jar bigbank.client.BigBankClient
+ .. 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.
Sample Overview
---------------
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java
index b294a11668..ce41006fa6 100644
--- a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java
+++ b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java
@@ -21,6 +21,8 @@ package bigbank.account;
import java.util.ArrayList;
import java.util.List;
+import org.osoa.sca.annotations.Service;
+
import bigbank.account.checking.CheckingAccountDetails;
import bigbank.account.checking.CheckingAccountService;
import bigbank.account.savings.SavingsAccountDetails;
@@ -33,6 +35,7 @@ import bigbank.calculator.CalculatorService;
/**
* Account service implementation
*/
+@Service(AccountService.class)
public class AccountServiceImpl implements AccountService {
private SavingsAccountService savingsAccountService;
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java
new file mode 100644
index 0000000000..281d829275
--- /dev/null
+++ b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package bigbank.server;
+
+import java.net.MalformedURLException;
+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;
+
+/**
+ * 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 Spring SCA BigBank server...");
+ ClassLoader cl = BigBankServer.class.getClassLoader();
+ EmbeddedSCADomain domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+ //Start the domain
+ domain.start();
+
+ // Contribute the SCA contribution
+ ContributionService contributionService = domain.getContributionService();
+
+ URL bigbankContribUrl = getContributionURL(BigBankServer.class);
+ Contribution bigbankContribution = contributionService.contribute("http://bigbank", bigbankContribUrl, false);
+ for (Composite deployable : bigbankContribution.getDeployables()) {
+ domain.getDomainComposite().getIncludes().add(deployable);
+ domain.buildComposite(deployable);
+ }
+
+ //Start Components from composite
+ for (Composite deployable : bigbankContribution.getDeployables()) {
+ domain.getCompositeActivator().activate(deployable);
+ domain.getCompositeActivator().start(deployable);
+ }
+
+ if (timeout < 0) {
+ System.out.println("Press Enter to Exit...");
+ System.in.read();
+ } else {
+ Thread.sleep(timeout);
+ }
+
+ contributionService.remove("http://bigbank");
+
+ // Stop Components from composite
+ for (Composite deployable : bigbankContribution.getDeployables()) {
+ domain.getCompositeActivator().stop(deployable);
+ domain.getCompositeActivator().deactivate(deployable);
+ }
+
+ domain.stop();
+
+ domain.close();
+
+ System.out.println("Bye");
+ }
+
+ private static URL getContributionURL(Class<?> cls) throws MalformedURLException {
+ String flag = "/" + cls.getName().replace('.', '/') + ".class";
+ URL url = cls.getResource(flag);
+ String root = url.toExternalForm();
+ root = root.substring(0, root.length() - flag.length() + 1);
+ if (root.startsWith("jar:") && root.endsWith("!/")) {
+ root = root.substring(4, root.length() - 2);
+ }
+ url = new URL(root);
+ return url;
+ }
+
+}
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite b/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite
index dc05d9fd1d..a7624235d8 100644
--- a/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite
+++ b/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite
@@ -30,10 +30,13 @@
<component name="AccountServiceComponent">
<implementation.spring location="spring-context/Account-spring-context.xml"/>
+
+ <service name="AccountService">
+ <interface.java interface="bigbank.account.AccountService"/>
+ </service>
<reference name="savingsAccountService" target="SavingsAccountServiceComponent"/>
- <!--reference name="checkingAccountService" target="CheckingAccountServiceComponent"/-->
<reference name="checkingAccountService">
<interface.java interface="bigbank.account.checking.CheckingAccountService"/>
<binding.jms initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
@@ -60,10 +63,6 @@
<implementation.composite name="bbsv:SavingsAccountDept"/>
</component>
- <!--component name="CheckingAccountServiceComponent">
- <implementation.composite name="bbck:CheckingsAccountDept"/>
- </component-->
-
<component name="StockAccountServiceComponent">
<implementation.composite name="bbst:StockAccountDept"/>
</component>
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite b/java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite
deleted file mode 100644
index e0be7584e3..0000000000
--- a/java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
--->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
- targetNamespace="http://bigbank/checkings"
- xmlns:bbck="http://bigbank/checkings"
- xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
- xmlns:bba="http://bigbankAccount"
- name="CheckingsAccountDept">
-
- <service name="CheckingAccountService" promote="CheckingAccountServiceComponent"/>
-
- <component name="CheckingAccountServiceComponent">
- <implementation.spring location="spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml"/>
- </component>
-
-</composite>
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite b/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite
index caa849e0fd..97dff499ba 100644
--- a/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite
+++ b/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite
@@ -26,7 +26,7 @@
<service name="StockAccountService" promote="StockAccountServiceComponent"/>
<component name="StockAccountServiceComponent">
- <implementation.spring location="spring-context/StockAccount/META-INF/spring/StockAccount-context.xml"/>
+ <implementation.spring location="spring-context/StockAccount"/>
</component>
</composite>
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml b/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml
index d59d03f611..071092138d 100644
--- a/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml
+++ b/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml
@@ -24,26 +24,30 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/spring-sca.xsd">
- <sca:service name="AccountService"
- type="bigbank.account.AccountService" target="AccountServiceBean"/>
-
- <bean id="AccountServiceBean" class="bigbank.account.AccountServiceImpl">
- <property name="savingsAccountService" ref="savingsAccountService"/>
- <property name="checkingAccountService" ref="checkingAccountService"/>
- <property name="stockAccountService" ref="stockAccountService"/>
+ <!-- <sca:service name="AccountService"
+ type="bigbank.account.AccountService" target="AccountServiceBean"/> -->
+
+ <bean id="AccountServiceBean" class="bigbank.account.AccountServiceImpl">
<property name="calculatorService" ref="calculatorService"/>
- <property name="stockQuoteService" ref="stockQuoteService"/>
+ <property name="stockQuoteService" ref="stockQuoteService"/>
+ <property name="checkingAccountService" ref="checkingAccountService"/>
+
+ <!-- Here are some implicit references & properties - a property with a ref not satisifed
+ * within the Spring application context.
+ -->
+ <property name="savingsAccountService" ref="savingsAccountService"/>
+ <property name="stockAccountService" ref="stockAccountService"/>
<property name="currency" value="EURO"/>
</bean>
-
- <sca:reference name="savingsAccountService" type="bigbank.account.savings.SavingsAccountService"/>
<sca:reference name="checkingAccountService" type="bigbank.account.checking.CheckingAccountService"/>
- <sca:reference name="stockAccountService" type="bigbank.account.stock.StockAccountService"/>
-
<sca:reference name="calculatorService" type="bigbank.calculator.CalculatorService"/>
<sca:reference name="stockQuoteService" type="bigbank.stockquote.StockQuoteService"/>
+
+ <!-- <sca:reference name="savingsAccountServiceRef" type="bigbank.account.savings.SavingsAccountService"/>-->
+
+ <!-- <sca:reference name="stockAccountServiceRef" type="bigbank.account.stock.StockAccountService"/>-->
</beans>
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml b/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml
deleted file mode 100644
index 7c1780b448..0000000000
--- a/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?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.
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:sca="http://www.springframework.org/schema/sca"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/spring-sca.xsd">
-
- <sca:service name="CheckingAccountService"
- type="bigbank.account.checking.CheckingAccountService" target="CheckingAccountServiceBean"/>
-
- <bean id="CheckingAccountServiceBean" class="bigbank.account.checking.CheckingAccountServiceImpl">
- </bean>
-
-</beans> \ No newline at end of file
diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF b/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..32fa070ffb
--- /dev/null
+++ b/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Spring-Context: META-INF/spring/StockAccount-context.xml
+
+
diff --git a/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java b/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java
index f0a7b06813..d82e383e46 100644
--- a/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java
+++ b/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java
@@ -20,9 +20,7 @@ package bigbank;
import junit.framework.TestCase;
-import org.apache.tuscany.sca.host.embedded.SCADomain;
-
-import bigbank.account.AccountService;
+import bigbank.server.BigBankServer;
/**
* Tests out the big bank service
@@ -30,26 +28,7 @@ import bigbank.account.AccountService;
*/
public class BigBankTestCase extends TestCase {
- private SCADomain scaDomain;
- AccountService accountService;
-
- @Override
- protected void setUp() throws Exception {
- scaDomain = SCADomain.newInstance("BigBank.composite");
- accountService = scaDomain.getService(AccountService.class, "AccountServiceComponent");
- }
-
- @Override
- protected void tearDown() throws Exception {
- scaDomain.close();
- }
-
- public void test() throws Exception {
-// try {
-// System.out.println("Account summary: " + accountService.getAccountReport("Customer_01") );
-// }
-// catch (Exception e) {
-//
-// }
+ public void testServer() throws Exception {
+ BigBankServer.main(new String[] {"1000"});
}
}