summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--branches/sca-java-1.5/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java3
-rw-r--r--branches/sca-java-1.5/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java8
-rw-r--r--branches/sca-java-1.5/tutorials/store/README205
-rw-r--r--branches/sca-java-1.5/tutorials/store/domain/cloud.composite10
-rw-r--r--branches/sca-java-1.5/tutorials/store/domain/domain.composite10
-rw-r--r--branches/sca-java-1.5/tutorials/store/domain/workspace.xml10
6 files changed, 209 insertions, 37 deletions
diff --git a/branches/sca-java-1.5/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java b/branches/sca-java-1.5/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
index e614b47fc7..67836748fc 100644
--- a/branches/sca-java-1.5/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
+++ b/branches/sca-java-1.5/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
@@ -70,7 +70,8 @@ public class ArtifactModelResolver implements ModelResolver {
if (import_ instanceof ResourceImport) {
ResourceImport resourceImport = (ResourceImport)import_;
//check the import location against the computed package name from the componentType URI
- if (resourceImport.getURI().equals(uri)) {
+ if ((resourceImport.getURI().equals(uri)) &&
+ (resourceImport.getModelResolver() != null)){
// Delegate the resolution to the import resolver
resolved = resourceImport.getModelResolver().resolveModel(Artifact.class, (Artifact)unresolved);
if (!resolved.isUnresolved()) {
diff --git a/branches/sca-java-1.5/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java b/branches/sca-java-1.5/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java
index 1eb70cce77..029c8c746b 100644
--- a/branches/sca-java-1.5/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java
+++ b/branches/sca-java-1.5/modules/domain-manager/src/main/java/org/apache/tuscany/sca/domain/manager/impl/DeployableCompositeCollectionImpl.java
@@ -284,7 +284,9 @@ public class DeployableCompositeCollectionImpl implements ItemCollection, LocalI
Contribution contribution = (Contribution)contributionProcessor.read(null, uri, location);
- contributionProcessor.resolve(contribution, new DefaultModelResolver());
+ // TODO - analyse dependencies here?
+
+ //contributionProcessor.resolve(contribution, new DefaultModelResolver());
// Cache contribution
contributionCache = new ContributionCache();
@@ -298,8 +300,8 @@ public class DeployableCompositeCollectionImpl implements ItemCollection, LocalI
throw e;
} catch (MalformedURLException e) {
throw new ContributionReadException(e);
- } catch (ContributionResolveException e) {
- throw new ContributionReadException(e);
+ // } catch (ContributionResolveException e) {
+ // throw new ContributionReadException(e);
} catch (Throwable e) {
throw new ContributionReadException(e);
}
diff --git a/branches/sca-java-1.5/tutorials/store/README b/branches/sca-java-1.5/tutorials/store/README
index 26687177aa..036f43ebf2 100644
--- a/branches/sca-java-1.5/tutorials/store/README
+++ b/branches/sca-java-1.5/tutorials/store/README
@@ -1,34 +1,203 @@
Store Tutorial
-======================================
+==============
-This is a tutorial that shows how to use SCA and Tuscany to build multiple
-variations of an online Store application.
+This tutorial that shows how to use SCA and Tuscany to build multiple
+variations of an online Store application. The variations demostrate the
+evolution of the Store as it goes through the following stages:
-For an overview of the scenarios covered here, please refer to Tutorial.pdf.
-
-For more detailed information, please see:
-
-http://tuscany.apache.org/getting-started-with-tuscany.html
+1 - Initial online fruit store
+2 - Fruit store merges with vegetable store to form the fruit and vegetable store
+3 - The fruit and vegetable store move to using a database for storing the cart
+4 - The fruit and vegetable store acts as a supplier to other online stores
+5 - The fruit and vegetable store ships their software solution to another geography
+For diagrams of the scenarios covered here, please refer to Tutorial.pdf
Running The Tutorial Application
--------------------------------
-Start the SCA Domain Manager:
+Start the SCA Domain Manager on linux:
+
cd domain
java -jar ../../../modules/tuscany-node-launcher-1.5.jar domain
-To access the SCA Manager application, point your Web browser to:
+Start the SCA Domain Manager on windows:
+
+ cd domain
+ java -jar ..\..\..\modules\tuscany-node-launcher-1.5.jar domain
+
+Access the SCA Domain Manager application by pointing your Web browser at:
+
http://localhost:9990/ui/cloud/
-Select the node you want to start (e.g StoreNode), then click the Start button.
-Note that the distribution does not include a prebuilt .war file for the catalog-webapp
-so before you can start the store node you need to first build this by going the the
-store/catalog-webapp folder and running
+This shows you all of the Tuscany nodes that are configured to run
+in the store tutorial domain. If you are interested, the configuration
+is stored on disc in the store/domain directory but for now let's just
+start some nodes and see what happens.
+
+The different nodes you see are used to start different scenarios in
+the tutorial. Select the node you want to start (e.g StoreNode), then click the
+Start button. You may need to give the nodes a little time to start up. Check the
+console where you lauched the domain manager application and you will see the
+following message when nodes have started.
+
+INFO: INFO: Press 'q' to quit, 'r' to restart.
+
+Remember to shut down the nodes before you exit the domain manager application.
+
+The following describes the nodes you have to start for each scenario and some
+usful links to explore once the node has started.
+
+1 - Initial online fruit store
+----------------------------
+
+Start
+
+ StoreNode
+
+The store itself can be found at
+
+ http://localhost:8100/ui/
+
+If you want to look at how Tuscany provides remote bindings you can take
+a look at the service description that Tuscany created automatically
+for the store catalog service which is exposed over a JSONRPC binding
+Point your browser at:
+
+ http://l3localhost:8100/StoreCatalog?smd
+
+The service is configured in the SCA composite file in the following way:
+
+ <component name="StoreCatalog">
+ <implementation.java class="services.FruitsCatalogImpl"/>
+ <property name="currencyCode">USD</property>
+ <service name="Catalog">
+ <t:binding.jsonrpc/>
+ </service>
+ <reference name="currencyConverter" target="StoreCurrencyConverter"/>
+ </component>
+
+Note the inclusion of <t:binding.jsonrpc/>. This is all that is required to
+make this service available over JSONRPC. If you want to expose the service
+over web services simply add <binding.ws/> instead of (or as well as) <t:binding.jsonrpc/>.
+
+2 - Fruit store merges with vegetable store to form the fruit and vegetable store
+---------------------------------------------------------------------------------
+
+Start
+
+ CatalogsNode
+ StoreMergerNode
+
+The store itself can be found at
+
+ http://localhost:8101/ui/
+
+Now you see that there are more items in the catalog as the fruit and
+vegetable catalogs are both providing content. The vegetable catalog
+that was introduced during the merger is contacted using web services.
+If you want to see the WSDL for the vegetable catalog point your browser
+at
+
+http://l3aw203:8200/VegetablesCatalogWebService?wsdl
+
+The vegetable catalog service is configured in an SCA composite file
+in the following way:
+
+ <component name="VegetablesCatalogWebService">
+ <implementation.java class="services.VegetablesCatalogImpl"/>
+ <service name="Catalog">
+ <binding.ws/>
+ </service>
+ </component>
+
+3 - The fruit and vegetable store move to using a database to storing the cart
+------------------------------------------------------------------------------
+
+Start
+
+ StoreDBNode
+
+The store itself can be found at
+
+ http://l3aw203:8102/ui/
+
+This looks the same as the scenario 2 store but this time a database is used
+for storing items put into the shopping cart. When you add items you
+will see messages on the console indicating that items are added to the
+database. For example.
+
+INFO: insert into Cart values ('cart-8c8bcc43-5036-4e9a-b282-0dd3d00d350c', 'Apple', '$2.99')
+
+This scenario shows how you change the implementation of a service without
+changing any of the configuration of the rest of the application
+
+4 - The fruit and vegetable store acts as a supplier to other online stores
+---------------------------------------------------------------------------
+
+Start
+
+ StoreSupplierNode
+
+The store itself can be found at
+
+ http://localhost:8103/ui/
+
+Again this is the same basic store as in scenario 3. However this time the
+shopping cart and catalog serivces have been given additional remote bindings so that
+the services can be accessed by others. For example, take a look at the WSDL
+description of the shopping cart service that is now available at:
+
+ http://l3aw203:8333/ShoppinCartTotalWebService?wsdl
+
+This WSDL is available as the shopping cart total service is now configured with a web services
+binding in the following way:
+
+ <component name="StoreSupplierShoppingCart">
+ <implementation.java class="services.db.ShoppingCartTableImpl"/>
+ <property name="database">../store-supplier/target/cart-db</property>
+ <service name="Cart">
+ <t:binding.atom uri="/ShoppingCart/Cart"/>
+ </service>
+ <service name="Total">
+ <t:binding.jsonrpc/>
+ <binding.ws uri="/ShoppinCartTotalWebService"/>
+ </service>
+ </component>
+
+If you want to actually exercise these services from a standalone application
+you can run up the StoreClientNode using the provided launcher
+
+store/store-client/launch/LaunchStoreClientNode
+
+
+5 - The fruit and vegetable store ships their software solution to another geography
+------------------------------------------------------------------------------------
+
+Start
+
+ CurrencyNode
+ StoreEUNode
+
+The store itself can be found at
+
+ http://localhost:8104/ui/
+
+Notice now that the prices are quoted in Euros and the language is French. This was
+achieved by editing the store.html file to change the language and presentation to
+be appropriate for Europe. The curreny was changed by reconfiguring the catalog
+component to use EUR instead of USD.
+
+ <component name="StoreEUCatalog">
+ <implementation.java class="services.merger.MergedCatalogImpl"/>
+ <property name="currencyCode">EUR</property>
+ ...
+ </component>
+
+
- ant compile
+For more detailed information about how to get started with Apache Tuscany
+see our online guides at:
-You should now be able to access the online Store application. Point your Web
-browser to:
- http://localhost:8100/ui/
+http://tuscany.apache.org/sca-java-getting-started-guides-1x.html
diff --git a/branches/sca-java-1.5/tutorials/store/domain/cloud.composite b/branches/sca-java-1.5/tutorials/store/domain/cloud.composite
index 8f879c5261..c01653adb7 100644
--- a/branches/sca-java-1.5/tutorials/store/domain/cloud.composite
+++ b/branches/sca-java-1.5/tutorials/store/domain/cloud.composite
@@ -28,9 +28,9 @@
<include name="ns2:StoreDBNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
<include name="ns2:StoreSupplierNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
<include name="ns2:StoreEUNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
- <include name="ns2:StoreMashupNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
- <include name="ns2:StoreMarketNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
- <include name="ns2:CatalogWebAppNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
- <include name="ns2:CatalogMediationNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
- <include name="ns2:CatalogEJBNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/>
+ <!--include name="ns2:StoreMashupNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/-->
+ <!--include name="ns2:StoreMarketNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/-->
+ <!--include name="ns2:CatalogWebAppNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/-->
+ <!--include name="ns2:CatalogMediationNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/-->
+ <!--include name="ns2:CatalogEJBNode" uri="http://tuscany.apache.org/cloud" xmlns:ns2="http://tuscany.apache.org/cloud"/-->
</composite>
diff --git a/branches/sca-java-1.5/tutorials/store/domain/domain.composite b/branches/sca-java-1.5/tutorials/store/domain/domain.composite
index 8d47697df8..aa56546ab7 100644
--- a/branches/sca-java-1.5/tutorials/store/domain/domain.composite
+++ b/branches/sca-java-1.5/tutorials/store/domain/domain.composite
@@ -25,12 +25,12 @@
<include name="ns2:store-client" uri="store-client" xmlns:ns2="http://store"/>
<include name="ns2:store-db" uri="store-db" xmlns:ns2="http://store"/>
<include name="ns2:store-supplier" uri="store-supplier" xmlns:ns2="http://store"/>
- <include name="ns2:store-market" uri="store-market" xmlns:ns2="http://store"/>
+ <!--include name="ns2:store-market" uri="store-market" xmlns:ns2="http://store"/-->
<include name="ns2:store-eu" uri="store-eu" xmlns:ns2="http://store"/>
- <include name="ns2:store-mashup" uri="store-mashup" xmlns:ns2="http://store"/>
+ <!-- include name="ns2:store-mashup" uri="store-mashup" xmlns:ns2="http://store"/-->
<include name="ns2:catalogs" uri="web-services" xmlns:ns2="http://services"/>
<include name="ns2:currency" uri="web-services" xmlns:ns2="http://services"/>
- <include name="ns2:catalog-web" uri="catalog-webapp" xmlns:ns2="http://catalog"/>
- <include name="ns2:catalog-mediation" uri="catalog-mediation" xmlns:ns2="http://catalog"/>
- <include name="ns2:catalog-ejb" uri="catalog-ejb" xmlns:ns2="http://catalog"/>
+ <!--include name="ns2:catalog-web" uri="catalog-webapp" xmlns:ns2="http://catalog"/-->
+ <!--include name="ns2:catalog-mediation" uri="catalog-mediation" xmlns:ns2="http://catalog"/-->
+ <!--include name="ns2:catalog-ejb" uri="catalog-ejb" xmlns:ns2="http://catalog"/-->
</composite>
diff --git a/branches/sca-java-1.5/tutorials/store/domain/workspace.xml b/branches/sca-java-1.5/tutorials/store/domain/workspace.xml
index 9cdbe04ac7..b982255012 100644
--- a/branches/sca-java-1.5/tutorials/store/domain/workspace.xml
+++ b/branches/sca-java-1.5/tutorials/store/domain/workspace.xml
@@ -24,12 +24,12 @@
<contribution location="file:../store-client/target/tutorial-store-client.jar" uri="store-client"/>
<contribution location="file:../store-db/target/tutorial-store-db.jar" uri="store-db"/>
<contribution location="file:../store-supplier/target/tutorial-store-supplier.jar" uri="store-supplier"/>
- <contribution location="file:../store-market/target/tutorial-store-market.jar" uri="store-market"/>
+ <!-- contribution location="file:../store-market/target/tutorial-store-market.jar" uri="store-market"/-->
<contribution location="file:../store-eu/target/tutorial-store-eu.jar" uri="store-eu"/>
- <contribution location="file:../store-mashup" uri="store-mashup"/>
+ <!-- contribution location="file:../store-mashup" uri="store-mashup"/-->
<contribution location="file:../web-services/target/tutorial-web-services.jar" uri="web-services"/>
- <contribution location="file:../catalog-webapp/target/tutorial-catalog-webapp.war" uri="catalog-webapp"/>
- <contribution location="file:../catalog-mediation/target/tutorial-catalog-mediation.jar" uri="catalog-mediation"/>
- <contribution location="file:../catalog-ejb/target/tutorial-catalog-ejb.jar" uri="catalog-ejb"/>
+ <!-- contribution location="file:../catalog-webapp/target/tutorial-catalog-webapp.war" uri="catalog-webapp"/-->
+ <!-- contribution location="file:../catalog-mediation/target/tutorial-catalog-mediation.jar" uri="catalog-mediation"/-->
+ <!-- contribution location="file:../catalog-ejb/target/tutorial-catalog-ejb.jar" uri="catalog-ejb"/-->
<contribution location="file:../domain/cloud" uri="http://tuscany.apache.org/cloud"/>
</workspace>