diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-19 16:26:34 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-19 16:26:34 +0000 |
commit | 0d45e3ed781fd306d0ee24995648a74666d1bec6 (patch) | |
tree | 1196682b7871d515b813314d927d22df226d2e73 /java/sca/samples/simple-bigbank-spring | |
parent | eb0c44c3a43aa1f5dd58487d2b0ed95197992c46 (diff) |
TUSCANY-2550 - Adding more bindings to the spring bigbank sample. Convert the sample from SCADomain to Node APIs. Thanks for the patch Ram
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@687088 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/samples/simple-bigbank-spring')
7 files changed, 416 insertions, 116 deletions
diff --git a/java/sca/samples/simple-bigbank-spring/build-dojo.xml b/java/sca/samples/simple-bigbank-spring/build-dojo.xml new file mode 100644 index 0000000000..05daf98969 --- /dev/null +++ b/java/sca/samples/simple-bigbank-spring/build-dojo.xml @@ -0,0 +1,92 @@ +<?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. +--> +<project name="DojoZipInstaller"> + + + <property name="dojo.version" value="1.0.0"/> + <property name="unpack.location" value="${basedir}/samples/simple-bigbank-spring/src/main/resources/web/dojo"/> + + + <target name="check-dojo-installed"> + <condition property="already.installed" > + <available file="${localRepository}/dojo/dojo/${dojo.version}/dojo-${dojo.version}.zip"/> + </condition> + <condition property="maven.suffix" value=""> + <os family="unix"/> + </condition> + <condition property="maven.suffix" value=".bat"> + <os family="windows"/> + </condition> + </target> + + + <target name="check-dojo-unpacked"> + <condition property="already.unpacked" > + <available file="${unpack.location}"/> + </condition> + </target> + + <target name="install-dojo" depends="check-dojo-installed" unless="already.installed"> + <mkdir dir="${basedir}/target/dojo-download/"/> + <get src="http://download.dojotoolkit.org/release-${dojo.version}/dojo-release-${dojo.version}.zip" + dest="${basedir}/target/dojo-download/dojo-release-${dojo.version}.zip" + verbose="true" + usetimestamp="true"/> + <exec executable="mvn${maven.suffix}" dir="${basedir}" failonerror="false"> + <arg line="install:install-file -DgroupId=dojo -DartifactId=dojo -Dversion=${dojo.version} -Dpackaging=zip -DgeneratePom=true -Dfile=${basedir}/target/dojo-download/dojo-release-${dojo.version}.zip"/> + </exec> + </target> + + <target name="install-dojo-nomaven" depends="check-dojo-installed" unless="already.installed"> + <mkdir dir="${basedir}/target/dojo-download/"/> + <get src="http://download.dojotoolkit.org/release-${dojo.version}/dojo-release-${dojo.version}.zip" + dest="${basedir}/target/dojo-download/dojo-release-${dojo.version}.zip" + verbose="true" + usetimestamp="true"/> + <copy file="${basedir}/target/dojo-download/dojo-release-${dojo.version}.zip" + tofile="${localRepository}/dojo/dojo/${dojo.version}/dojo-${dojo.version}.zip"/> + </target> + + + <target name="unpack-dojo-files" depends="check-dojo-installed, check-dojo-unpacked" unless="already.unpacked"> + <fail message="dojo zip file not installed in local repository: ${localRepository}" unless="already.installed"/> + <mkdir dir="${basedir}/target/dojo-unpack-temp/"/> + <unzip src="${localRepository}/dojo/dojo/${dojo.version}/dojo-${dojo.version}.zip" + dest="${basedir}/target/dojo-unpack-temp/" + overwrite="false"> + <patternset> + <include name="dojo-release-${dojo.version}/dojo/**"/> + <exclude name="dojo-release-${dojo.version}/dojo/tests/**"/> + <include name="dojo-release-${dojo.version}/dijit/**"/> + <exclude name="dojo-release-${dojo.version}/dojox/**"/> + <exclude name="dojo-release-${dojo.version}/util/**"/> + </patternset> + </unzip> + <move file="${basedir}/target/dojo-unpack-temp/dojo-release-${dojo.version}" + tofile="${unpack.location}" + verbose="true"/> + <delete dir="${basedir}/target/dojo-unpack-temp/"/> + </target> + + + <target name="clean-dojo-files"> + <delete dir="${unpack.location}"/> + </target> +</project> diff --git a/java/sca/samples/simple-bigbank-spring/pom.xml b/java/sca/samples/simple-bigbank-spring/pom.xml index ac866187a5..75030ba81b 100644 --- a/java/sca/samples/simple-bigbank-spring/pom.xml +++ b/java/sca/samples/simple-bigbank-spring/pom.xml @@ -38,9 +38,58 @@ <dependencies> <dependency> <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-node2-api</artifactId> + <version>1.4-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-node2-impl</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-host-embedded</artifactId> <version>1.4-SNAPSHOT</version> </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-core-spi</artifactId> + <version>1.4-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.ws.security</groupId> + <artifactId>wss4j</artifactId> + <version>1.5.3</version> + </dependency> + + <dependency> + <groupId>commons-httpclient</groupId> + <artifactId>commons-httpclient</artifactId> + <version>3.0.1</version> + </dependency> + + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.1</version> + <exclusions> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>servlet-api</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.4-SNAPSHOT</version> + </dependency> <dependency> <groupId>org.apache.tuscany.sca</groupId> @@ -79,22 +128,51 @@ <dependency> <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-host-tomcat</artifactId> + <artifactId>tuscany-binding-atom-abdera</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-rss-rome</artifactId> <version>1.4-SNAPSHOT</version> <scope>runtime</scope> </dependency> <dependency> - <groupId>org.apache.activemq</groupId> - <artifactId>apache-activemq</artifactId> - <version>4.1.1</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.apache.activemq</groupId> - <artifactId>activemq-web-demo</artifactId> - </exclusion> - </exclusions> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-resource-runtime</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-jsonrpc-runtime</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-http-runtime</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-jetty</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-tomcat</artifactId> + <version>1.4-SNAPSHOT</version> + <scope>runtime</scope> </dependency> <dependency> @@ -107,7 +185,68 @@ </dependencies> <build> - <finalName>${artifactId}</finalName> + <finalName>${artifactId}</finalName> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + + <dependencies> + <dependency> + <groupId>ant</groupId> + <artifactId>ant-trax</artifactId> + <version>1.6.5</version> + </dependency> + </dependencies> + + <executions> + <execution> + <id>install-dojo</id> + <phase>validate</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <tasks> + <ant antfile="./build-dojo.xml" target="install-dojo"> + <property name="localRepository" value="${settings.localRepository}"/> + </ant> + </tasks> + </configuration> + </execution> + <execution> + <id>copy-dojo-files</id> + <phase>generate-resources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <tasks> + <ant antfile="./build-dojo.xml" target="unpack-dojo-files"> + <property name="localRepository" value="${settings.localRepository}"/> + <property name="artifactId" value="${artifactId}"/> + </ant> + </tasks> + </configuration> + </execution> + <execution> + <id>clean-dojo-files</id> + <phase>clean</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <tasks> + <ant antfile="./build-dojo.xml" target="clean-dojo-files"> + <property name="localRepository" value="${settings.localRepository}"/> + <property name="artifactId" value="${artifactId}"/> + </ant> + </tasks> + </configuration> + </execution> + </executions> + </plugin> + </plugins> </build> </project> diff --git a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/feed/AccountFeedImpl.java b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/feed/AccountFeedImpl.java new file mode 100644 index 0000000000..386f7bb90d --- /dev/null +++ b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/account/feed/AccountFeedImpl.java @@ -0,0 +1,71 @@ +/* + * 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.account.feed; + +import org.apache.tuscany.sca.data.collection.Collection; +import org.apache.tuscany.sca.data.collection.Entry; +import org.apache.tuscany.sca.data.collection.NotFoundException; +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Service; + +import bigbank.account.AccountService; +import bigbank.account.AccountReport; + +/** + * @version $$Rev$$ $$Date$$ + */ + +@Service(Collection.class) +public class AccountFeedImpl implements Collection<String, String> { + + @Reference + protected AccountService accountService; + + public Entry<String, String>[] getAll() { + + // Add the Account report entry + String report = get("1234"); + Entry<String, String> entry = new Entry<String, String>("1234", report); + + return new Entry[] { entry } ; + } + + public String get(String id) { + + // Get the account report for the specified customer ID + AccountReport accreport = accountService.getAccountReport(id); + String report = accreport.getCurrency(); + + return report; + } + + public void delete(String key) throws NotFoundException { + } + + public String post(String key, String item) { + return null; + } + + public void put(String key, String item) throws NotFoundException { + } + + public Entry<String, String>[] query(String queryString) { + return null; + } +} diff --git a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/client/BigBankClient.java b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/client/BigBankClient.java index a033c54ebb..1ad5a3f7b3 100644 --- a/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/client/BigBankClient.java +++ b/java/sca/samples/simple-bigbank-spring/src/main/java/bigbank/client/BigBankClient.java @@ -19,7 +19,9 @@ package bigbank.client; -import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCANode2; +import org.apache.tuscany.sca.node.SCANode2Factory; import bigbank.account.AccountService; @@ -30,14 +32,15 @@ import bigbank.account.AccountService; public class BigBankClient { public static void main(String[] args) throws Exception { - SCADomain scaDomain = SCADomain.newInstance("BigBank.composite"); + SCANode2Factory factory = SCANode2Factory.newInstance(); + SCANode2 node = factory.createSCANodeFromClassLoader("BigBank.composite", BigBankClient.class.getClassLoader()); + node.start(); - AccountService accountService = scaDomain.getService(AccountService.class, - "AccountServiceComponent"); + AccountService accountService = ((SCAClient)node).getService(AccountService.class, "AccountServiceComponent"); System.out.println("Account summary: " + accountService.getAccountReport("Customer_01") ); - scaDomain.close(); + node.stop(); } } 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 index 281d829275..cb86b9162d 100644 --- 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 @@ -1,99 +1,54 @@ -/*
- * 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;
- }
-
-}
+/* + * 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 org.apache.tuscany.sca.node.SCANode2; +import org.apache.tuscany.sca.node.SCANode2Factory; + +/** + * 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 Sample SCA Spring BigBank server..."); + + SCANode2Factory factory = SCANode2Factory.newInstance(); + SCANode2 node = factory.createSCANodeFromClassLoader("BigBank.composite", BigBankServer.class.getClassLoader()); + node.start(); + + if (timeout < 0) { + System.out.println("Press Enter to Exit..."); + System.in.read(); + } else { + Thread.sleep(timeout); + } + + node.stop(); + + System.out.println("Bye"); + } +} 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 a7624235d8..ea2dbc7e1c 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 @@ -33,6 +33,8 @@ <service name="AccountService"> <interface.java interface="bigbank.account.AccountService"/> + <tuscany:binding.jsonrpc uri="http://localhost:8085/SpringAccountJSONService"/> + <binding.sca/> </service> <reference name="savingsAccountService" target="SavingsAccountServiceComponent"/> @@ -66,5 +68,21 @@ <component name="StockAccountServiceComponent"> <implementation.composite name="bbst:StockAccountDept"/> </component> + + <component name="AccountFeedComponent"> + <implementation.java class="bigbank.account.feed.AccountFeedImpl"/> + <service name="Collection"> + <tuscany:binding.rss uri="http://localhost:8085/rss"/> + <tuscany:binding.atom uri="http://localhost:8085/atom"/> + </service> + <reference name="accountService" target="AccountServiceComponent"/> + </component> + + <component name="WebResourceComponent"> + <tuscany:implementation.resource location="web"/> + <service name="Resource"> + <tuscany:binding.http uri="http://localhost:8085/"/> + </service> + </component> </composite> diff --git a/java/sca/samples/simple-bigbank-spring/src/main/resources/web/style.css b/java/sca/samples/simple-bigbank-spring/src/main/resources/web/style.css new file mode 100644 index 0000000000..1071583264 --- /dev/null +++ b/java/sca/samples/simple-bigbank-spring/src/main/resources/web/style.css @@ -0,0 +1,22 @@ +/* + * 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. + */ +* { font-family: arial; } + +table, th, td { border: 2px solid blue; border-collapse: collapse; } +th { color: white; background-color: blue; } |