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
  */
[EMAIL PROTECTED](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"});
     }
 }


Reply via email to