You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/08/13 13:24:15 UTC

svn commit: r685520 - in /tuscany/java/sca/samples/simple-bigbank-spring: ./ src/main/java/bigbank/account/ src/main/java/bigbank/server/ src/main/resources/ src/main/resources/spring-context/ src/main/resources/spring-context/CheckingsAccount/META-INF...

Author: antelder
Date: Wed Aug 13 04:24:14 2008
New Revision: 685520

URL: http://svn.apache.org/viewvc?rev=685520&view=rev
Log:
TUSCANY-2543: apply patch from Ramkumar Ramalingam to Demostrate Explicit/Implicit services, references in Spring BigBank Sample

Added:
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF
Removed:
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/CheckingsAccount.composite
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/CheckingsAccount/META-INF/spring/CheckingsAccount-context.xml
Modified:
    tuscany/java/sca/samples/simple-bigbank-spring/README
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite
    tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml
    tuscany/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java

Modified: tuscany/java/sca/samples/simple-bigbank-spring/README
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/README?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/README (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/README Wed Aug 13 04:24:14 2008
@@ -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. 
-
-The README in the samples directory (the directory above this) provides 
-general instructions about building and running samples. Take a look there 
-first. 
+======================
+This sample is made of 3 modules that represent the different aspects of a fictitious banking application.
 
-If you just want to run it to see what happens open a command prompt, navigate
-to this sample directory and do:
+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.
 
+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
+
+.. 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
 
-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-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
 
-java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-simple-bigbank-spring.jar bigbank.client.BigBankClient
+.. Leave the server running
 
-and on *nix do
+Start Spring Bigbank
+--------------------
+This contains all artifacts that make up the bigbank application.  This is the application that the end user interacts with
+
+Start spring-bigbank in the following way:
+
+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
 ---------------

Modified: tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/AccountServiceImpl.java Wed Aug 13 04:24:14 2008
@@ -21,6 +21,8 @@
 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 @@
 /**
  * Account service implementation
  */
+@Service(AccountService.class)
 public class AccountServiceImpl implements AccountService {
 
     private SavingsAccountService savingsAccountService;

Added: tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java?rev=685520&view=auto
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java (added)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/server/BigBankServer.java Wed Aug 13 04:24:14 2008
@@ -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;
+    }
+
+}

Modified: tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/BigBank.composite Wed Aug 13 04:24:14 2008
@@ -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>

Modified: tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/StockAccount.composite Wed Aug 13 04:24:14 2008
@@ -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>

Modified: tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/Account-spring-context.xml Wed Aug 13 04:24:14 2008
@@ -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>

Added: tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF?rev=685520&view=auto
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF (added)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/main/resources/spring-context/StockAccount/META-INF/MANIFEST.MF Wed Aug 13 04:24:14 2008
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Spring-Context: META-INF/spring/StockAccount-context.xml
+
+

Modified: tuscany/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java?rev=685520&r1=685519&r2=685520&view=diff
==============================================================================
--- tuscany/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java (original)
+++ tuscany/java/sca/samples/simple-bigbank-spring/src/test/java/bigbank/BigBankTestCase.java Wed Aug 13 04:24:14 2008
@@ -20,9 +20,7 @@
 
 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 @@
  */
 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"});
     }
 }