Quote Xquery Sample
===================

This sample covers the most important integration scenarios for the xquery
implementation type and its corresponding saxon data bindings.
 
If you just want to run it to see what happens open two command prompts (one for the server
and the other for the client), navigate to this sample directory and do:

Command Prompt 1:
ant run-server

Command Prompt 2:
ant run

OR if you don't have ant, on Windows do

Command Prompt 1:
java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-quote-xquery.jar xquery.quote.XQueryQuoteServer
Command Prompt 2:
java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-quote-xquery.jar xquery.quote.XQueryQuoteClient

and on *nix do

Command Prompt 1:
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteServer
Command Prompt 2:
java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteClient


Results
----------
The sample when run should simply display on the standard output some startup messages followed by:

The service side:
Buildfile: build.xml

run-server:
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.core.StandardEngine start
     [java] INFO: Starting Servlet Engine: Apache Tomcat/6.0.10
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.ContextConfig defaultWebConfig
     [java] INFO: No default web.xml
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/jsp_2_0.xsd
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_1.dtd
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register
     [java] WARNING: Could not get url for /javax/servlet/jsp/resources/web-jsptaglibrary_2_0.xsd
     [java] Sep 18, 2007 1:14:16 PM org.apache.catalina.startup.DigesterFactory register
     [java] WARNING: Could not get url for /javax/servlet/resources/j2ee_web_services_1_1.xsd
     [java] Sep 18, 2007 1:14:17 PM org.apache.coyote.http11.Http11Protocol init
     [java] INFO: Initializing Coyote HTTP/1.1 on http-8085
     [java] Sep 18, 2007 1:14:17 PM org.apache.coyote.http11.Http11Protocol start
     [java] INFO: Starting Coyote HTTP/1.1 on http-8085
     [java] Sep 18, 2007 1:14:17 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping
     [java] INFO: Added Servlet mapping: http://localhost:8085/QuoteJoinService
     [java] Sep 18, 2007 1:14:17 PM org.apache.tuscany.sca.http.tomcat.TomcatServer addServletMapping
     [java] INFO: Added Servlet mapping: http://localhost:8085/AvailQuoteProviderService
     [java] XQuery Quote server started (press enter to shutdown)
     [java] Sep 18, 2007 1:16:54 PM org.apache.coyote.http11.Http11Protocol destroy
     [java] INFO: Stopping Coyote HTTP/1.1 on http-8085

BUILD SUCCESSFUL
Total time: 2 minutes 51 seconds

The client side:
Buildfile: build.xml

run:
     [java] Input quote for the price list:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <priceQuote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pri="http://www.example.org/price" xsi:type="pri:PriceQuote">
     [java]   <customerName>Acme Inc</customerName>
     [java]   <shipAddress street="12 Springs Rd" city="Morris Plains" state="nj" zip="07960"/>
     [java]   <priceRequests>
     [java]     <priceRequest>
     [java]       <widgetId>12</widgetId>
     [java]       <price>1.0</price>
     [java]     </priceRequest>
     [java]     <priceRequest>
     [java]       <widgetId>134</widgetId>
     [java]       <price>34.1</price>
     [java]     </priceRequest>
     [java]     <priceRequest>
     [java]       <widgetId>211</widgetId>
     [java]       <price>10.0</price>
     [java]     </priceRequest>
     [java]   </priceRequests>
     [java] </priceQuote>
     [java] 
     [java] Input quote for the availability:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <availQuote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ava="http://www.example.org/avail" xsi:type="ava:AvailQuote">
     [java]   <availRequest>
     [java]     <widgetId>12</widgetId>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <quantityAvail>true</quantityAvail>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]   </availRequest>
     [java]   <availRequest>
     [java]     <widgetId>134</widgetId>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <quantityAvail>false</quantityAvail>
     [java]     <shipDate>BackOrder</shipDate>
     [java]   </availRequest>
     [java]   <availRequest>
     [java]     <widgetId>211</widgetId>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <quantityAvail>true</quantityAvail>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]   </availRequest>
     [java] </availQuote>
     [java] 
     [java] 
     [java] Output quote from local join:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote">
     [java]   <name>Acme Inc</name>
     [java]   <address>12 Springs Rd,Morris Plains,NJ,07960</address>
     [java]   <quoteResponse>
     [java]     <widgetId>12</widgetId>
     [java]     <unitPrice>1.0</unitPrice>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>11.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>134</widgetId>
     [java]     <unitPrice>34.1</unitPrice>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <fillOrder>false</fillOrder>
     [java]     <shipDate>BackOrder</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>0.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>211</widgetId>
     [java]     <unitPrice>10.0</unitPrice>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>1100.0</totalCost>
     [java]   </quoteResponse>
     [java] </quote>
     [java] 
     [java] 
     [java] Output quote from local join (second invokation):
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote">
     [java]   <name>Acme Inc</name>
     [java]   <address>12 Springs Rd,Morris Plains,NJ,07960</address>
     [java]   <quoteResponse>
     [java]     <widgetId>12</widgetId>
     [java]     <unitPrice>1.0</unitPrice>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]     <taxRate>0.2</taxRate>
     [java]     <totalCost>12.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>134</widgetId>
     [java]     <unitPrice>34.1</unitPrice>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <fillOrder>false</fillOrder>
     [java]     <shipDate>BackOrder</shipDate>
     [java]     <taxRate>0.2</taxRate>
     [java]     <totalCost>0.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>211</widgetId>
     [java]     <unitPrice>10.0</unitPrice>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]     <taxRate>0.2</taxRate>
     [java]     <totalCost>1200.0</totalCost>
     [java]   </quoteResponse>
     [java] </quote>
     [java] 
     [java] 
     [java] Output quote from web service join:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote">
     [java]   <name>Acme Inc</name>
     [java]   <address>12 Springs Rd,Morris Plains,NJ,07960</address>
     [java]   <quoteResponse>
     [java]     <widgetId>12</widgetId>
     [java]     <unitPrice>1.0</unitPrice>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>11.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>134</widgetId>
     [java]     <unitPrice>34.1</unitPrice>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <fillOrder>false</fillOrder>
     [java]     <shipDate>BackOrder</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>0.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>211</widgetId>
     [java]     <unitPrice>10.0</unitPrice>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>1100.0</totalCost>
     [java]   </quoteResponse>
     [java] </quote>
     [java] 
     [java] 
     [java] Output quote from properties join:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote">
     [java]   <name>Acme Inc</name>
     [java]   <address>12 Springs Rd,Morris Plains,NJ,07960</address>
     [java]   <quoteResponse>
     [java]     <widgetId>12</widgetId>
     [java]     <unitPrice>1.0</unitPrice>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>11.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>134</widgetId>
     [java]     <unitPrice>34.1</unitPrice>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <fillOrder>false</fillOrder>
     [java]     <shipDate>BackOrder</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>0.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>211</widgetId>
     [java]     <unitPrice>10.0</unitPrice>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>1100.0</totalCost>
     [java]   </quoteResponse>
     [java] </quote>
     [java] 
     [java] 
     [java] Output quote from external references join:
     [java] <?xml version="1.0" encoding="ASCII"?>
     [java] <quote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:quo="http://www.example.org/quote" xsi:type="quo:Quote">
     [java]   <name>Acme Inc</name>
     [java]   <address>12 Springs Rd,Morris Plains,NJ,07960</address>
     [java]   <quoteResponse>
     [java]     <widgetId>12</widgetId>
     [java]     <unitPrice>1.0</unitPrice>
     [java]     <requestedQuantity>10</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-03-22</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>11.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>134</widgetId>
     [java]     <unitPrice>34.1</unitPrice>
     [java]     <requestedQuantity>345</requestedQuantity>
     [java]     <fillOrder>false</fillOrder>
     [java]     <shipDate>BackOrder</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>0.0</totalCost>
     [java]   </quoteResponse>
     [java]   <quoteResponse>
     [java]     <widgetId>211</widgetId>
     [java]     <unitPrice>10.0</unitPrice>
     [java]     <requestedQuantity>100</requestedQuantity>
     [java]     <fillOrder>true</fillOrder>
     [java]     <shipDate>2003-04-21</shipDate>
     [java]     <taxRate>0.1</taxRate>
     [java]     <totalCost>1100.0</totalCost>
     [java]   </quoteResponse>
     [java] </quote>
     [java] 

BUILD SUCCESSFUL
Total time: 16 seconds


Sample Overview
---------------

 1. There is a central component for invoking the different
    scenarios: QuoteJoinLocalComponent
 2. It provides the following cases:
    - invoke XQuery component in the current assembly, by providing all needed
      information as input parameters
    - invoke XQuery component in external assembly, which is exposed as a web 
      service
    - invoke XQuery component in the current assembly, which retrieves the needed
      information from the component properties
    - invoke XQuery component in the current assembly, which retrieves the needed
      information from its references to other components:
         - one of the components is in the current assembly
         - the other component is in anther assembly and it is exposed (and accessed)
           as web service
    
  3. All of the XQuery components have reference to a component for calculation of the
    total price 
  4. SDO is used for data interchange

src/main/resources
    wsdl
        AvailQuote.xsd 
        PriceQuote.xsd
        Quote.xsd
        quotejoin.wsdl
    META-INF
        sca
            quote_join_external_references.xq --- the external references xquery script
            quote_join_properties.xq --- the property-based join xquery script
            quote_join.xq --- the join xquery script
    xqueryquotews.composite --- composite file for the client side
    xqueryquotewsclient.composite --- composite file for the service side
    
    build.xml                            - the Ant build file
    pom.xml                              - the Maven build file   


Building And Running The Sample Using Ant
-----------------------------------------
With the binary distribution the sample can be built and run using Maven
as follows: 

cd quote-xquery
ant compile 
ant run-server

(then from another command prompt)
cd quote-xquery
ant run


Building And Running The Sample Using Maven 
-------------------------------------------
With either the binary or source distribution the sample can be built and run 
using Maven as follows: 

cd quote-xquery
mvn

This shows that the Junit test cases have run successfully. 
