From a547b84aa11668a8d8a4a9b99442d95a586d8de8 Mon Sep 17 00:00:00 2001 From: antelder Date: Wed, 13 Aug 2008 11:24:14 +0000 Subject: 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 --- java/sca/samples/simple-bigbank-spring/README | 73 +++++++++++++--- .../java/bigbank/account/AccountServiceImpl.java | 3 + .../main/java/bigbank/server/BigBankServer.java | 99 ++++++++++++++++++++++ .../src/main/resources/BigBank.composite | 9 +- .../src/main/resources/CheckingsAccount.composite | 33 -------- .../src/main/resources/StockAccount.composite | 2 +- .../spring-context/Account-spring-context.xml | 28 +++--- .../META-INF/spring/CheckingsAccount-context.xml | 33 -------- .../StockAccount/META-INF/MANIFEST.MF | 4 + .../src/test/java/bigbank/BigBankTestCase.java | 27 +----- 10 files changed, 191 insertions(+), 120 deletions(-) create mode 100644 java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java delete mode 100644 java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite delete mode 100644 java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml create mode 100644 java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF (limited to 'java/sca') 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 @@ + + + + - - - 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 @@ - - - - - - - - - - - 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 @@ - + 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"> - - - - - - + + + - + + + + + + - - - - + + + + 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 @@ - - - - - - - - - - \ 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"}); } } -- cgit v1.2.3