diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-13 11:24:14 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-13 11:24:14 +0000 |
commit | a547b84aa11668a8d8a4a9b99442d95a586d8de8 (patch) | |
tree | f61f85816a87e2f8112a7fbc2333dc7de4bf5282 /java/sca/samples/simple-bigbank-spring/src | |
parent | 76350b074c8ef62ba4f1d95ece7bc43921ea9e4b (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 '')
9 files changed, 130 insertions, 108 deletions
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"}); } } |