Added: incubator/tuscany/java/sca/samples/quote-xquery/README URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/README?rev=577910&view=auto ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/README (added) +++ incubator/tuscany/java/sca/samples/quote-xquery/README Thu Sep 20 13:43:32 2007 @@ -0,0 +1,531 @@ +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: + +ant run-server +ant run + +OR if you don't have ant, on Windows do + +In the directory samples\quote-xquery use the JDK 1.5 java command to run the class xquery.quote.XQueryQuoteClient + +Linux: java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteServer +Linux: java -cp ../../lib/tuscany-sca-manifest.jar:target/sample-quote-xquery.jar xquery.quote.XQueryQuoteClient + +Windows: java -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-quote-xquery.jar xquery.quote.XQueryQuoteServer +Windows: 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 + +init: + +generate-sdo: + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package QuotePackageImpl + [java] >> Generating Java interface org.example.quote.QuoteFactory + [java] >> Generating /TargetProject/org/example/quote/QuoteFactory.java + [java] >> Examining old /TargetProject/org/example/quote/QuoteFactory.java + [java] >> Generating Java class org.example.quote.impl.QuoteFactoryImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.quote.Quote + [java] >> Generating /TargetProject/org/example/quote/Quote.java + [java] >> Examining old /TargetProject/org/example/quote/Quote.java + [java] >> Generating Java class org.example.quote.impl.QuoteImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteImpl.java + [java] >> Generating Response + [java] >> Generating Java interface org.example.quote.QuoteResponse + [java] >> Generating /TargetProject/org/example/quote/QuoteResponse.java + [java] >> Examining old /TargetProject/org/example/quote/QuoteResponse.java + [java] >> Generating Java class org.example.quote.impl.QuoteResponseImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteResponseImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteResponseImpl.java + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package AvailPackageImpl + [java] >> Generating Java interface org.example.avail.AvailFactory + [java] >> Generating /TargetProject/org/example/avail/AvailFactory.java + [java] >> Examining old /TargetProject/org/example/avail/AvailFactory.java + [java] >> Generating Java class org.example.avail.impl.AvailFactoryImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.avail.AvailQuote + [java] >> Generating /TargetProject/org/example/avail/AvailQuote.java + [java] >> Examining old /TargetProject/org/example/avail/AvailQuote.java + [java] >> Generating Java class org.example.avail.impl.AvailQuoteImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailQuoteImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailQuoteImpl.java + [java] >> Generating Request + [java] >> Generating Java interface org.example.avail.AvailRequest + [java] >> Generating /TargetProject/org/example/avail/AvailRequest.java + [java] >> Examining old /TargetProject/org/example/avail/AvailRequest.java + [java] >> Generating Java class org.example.avail.impl.AvailRequestImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailRequestImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailRequestImpl.java + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package PricePackageImpl + [java] >> Generating Java interface org.example.price.PriceFactory + [java] >> Generating /TargetProject/org/example/price/PriceFactory.java + [java] >> Examining old /TargetProject/org/example/price/PriceFactory.java + [java] >> Generating Java class org.example.price.impl.PriceFactoryImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.price.PriceQuote + [java] >> Generating /TargetProject/org/example/price/PriceQuote.java + [java] >> Examining old /TargetProject/org/example/price/PriceQuote.java + [java] >> Generating Java class org.example.price.impl.PriceQuoteImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceQuoteImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceQuoteImpl.java + [java] >> Generating Request + [java] >> Generating Java interface org.example.price.PriceRequest + [java] >> Generating /TargetProject/org/example/price/PriceRequest.java + [java] >> Examining old /TargetProject/org/example/price/PriceRequest.java + [java] >> Generating Java class org.example.price.impl.PriceRequestImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceRequestImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceRequestImpl.java + [java] >> Generating Requests + [java] >> Generating Java interface org.example.price.PriceRequests + [java] >> Generating /TargetProject/org/example/price/PriceRequests.java + [java] >> Examining old /TargetProject/org/example/price/PriceRequests.java + [java] >> Generating Java class org.example.price.impl.PriceRequestsImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceRequestsImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceRequestsImpl.java + [java] >> Generating Ship Address + [java] >> Generating Java interface org.example.price.ShipAddress + [java] >> Generating /TargetProject/org/example/price/ShipAddress.java + [java] >> Examining old /TargetProject/org/example/price/ShipAddress.java + [java] >> Generating Java class org.example.price.impl.ShipAddressImpl + [java] >> Generating /TargetProject/org/example/price/impl/ShipAddressImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/ShipAddressImpl.java + +compile: + [jar] Building jar: C:\Apache\tuscany-sca-1.0-incubating-SNAPSHOT\samples\quote-xquery\target\sample-quote-xquery.jar + +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 + +init: + +generate-sdo: + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package QuotePackageImpl + [java] >> Generating Java interface org.example.quote.QuoteFactory + [java] >> Generating /TargetProject/org/example/quote/QuoteFactory.java + [java] >> Examining old /TargetProject/org/example/quote/QuoteFactory.java + [java] >> Generating Java class org.example.quote.impl.QuoteFactoryImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.quote.Quote + [java] >> Generating /TargetProject/org/example/quote/Quote.java + [java] >> Examining old /TargetProject/org/example/quote/Quote.java + [java] >> Generating Java class org.example.quote.impl.QuoteImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteImpl.java + [java] >> Generating Response + [java] >> Generating Java interface org.example.quote.QuoteResponse + [java] >> Generating /TargetProject/org/example/quote/QuoteResponse.java + [java] >> Examining old /TargetProject/org/example/quote/QuoteResponse.java + [java] >> Generating Java class org.example.quote.impl.QuoteResponseImpl + [java] >> Generating /TargetProject/org/example/quote/impl/QuoteResponseImpl.java + [java] >> Examining old /TargetProject/org/example/quote/impl/QuoteResponseImpl.java + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package AvailPackageImpl + [java] >> Generating Java interface org.example.avail.AvailFactory + [java] >> Generating /TargetProject/org/example/avail/AvailFactory.java + [java] >> Examining old /TargetProject/org/example/avail/AvailFactory.java + [java] >> Generating Java class org.example.avail.impl.AvailFactoryImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.avail.AvailQuote + [java] >> Generating /TargetProject/org/example/avail/AvailQuote.java + [java] >> Examining old /TargetProject/org/example/avail/AvailQuote.java + [java] >> Generating Java class org.example.avail.impl.AvailQuoteImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailQuoteImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailQuoteImpl.java + [java] >> Generating Request + [java] >> Generating Java interface org.example.avail.AvailRequest + [java] >> Generating /TargetProject/org/example/avail/AvailRequest.java + [java] >> Examining old /TargetProject/org/example/avail/AvailRequest.java + [java] >> Generating Java class org.example.avail.impl.AvailRequestImpl + [java] >> Generating /TargetProject/org/example/avail/impl/AvailRequestImpl.java + [java] >> Examining old /TargetProject/org/example/avail/impl/AvailRequestImpl.java + [java] >> Generating code + [java] >> Generating packages + [java] >> Generating package PricePackageImpl + [java] >> Generating Java interface org.example.price.PriceFactory + [java] >> Generating /TargetProject/org/example/price/PriceFactory.java + [java] >> Examining old /TargetProject/org/example/price/PriceFactory.java + [java] >> Generating Java class org.example.price.impl.PriceFactoryImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceFactoryImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceFactoryImpl.java + [java] >> Generating Quote + [java] >> Generating Java interface org.example.price.PriceQuote + [java] >> Generating /TargetProject/org/example/price/PriceQuote.java + [java] >> Examining old /TargetProject/org/example/price/PriceQuote.java + [java] >> Generating Java class org.example.price.impl.PriceQuoteImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceQuoteImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceQuoteImpl.java + [java] >> Generating Request + [java] >> Generating Java interface org.example.price.PriceRequest + [java] >> Generating /TargetProject/org/example/price/PriceRequest.java + [java] >> Examining old /TargetProject/org/example/price/PriceRequest.java + [java] >> Generating Java class org.example.price.impl.PriceRequestImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceRequestImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceRequestImpl.java + [java] >> Generating Requests + [java] >> Generating Java interface org.example.price.PriceRequests + [java] >> Generating /TargetProject/org/example/price/PriceRequests.java + [java] >> Examining old /TargetProject/org/example/price/PriceRequests.java + [java] >> Generating Java class org.example.price.impl.PriceRequestsImpl + [java] >> Generating /TargetProject/org/example/price/impl/PriceRequestsImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/PriceRequestsImpl.java + [java] >> Generating Ship Address + [java] >> Generating Java interface org.example.price.ShipAddress + [java] >> Generating /TargetProject/org/example/price/ShipAddress.java + [java] >> Examining old /TargetProject/org/example/price/ShipAddress.java + [java] >> Generating Java class org.example.price.impl.ShipAddressImpl + [java] >> Generating /TargetProject/org/example/price/impl/ShipAddressImpl.java + [java] >> Examining old /TargetProject/org/example/price/impl/ShipAddressImpl.java + +compile: + +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 +----------------------------------------- +cd quote-xquery +ant compile +ant run-server + +you should see: +Buildfile: build.xml + +run: + + + +Building And Running The Sample Using Maven +------------------------------------------- +With either the binary or source distributions 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.
Added: incubator/tuscany/java/sca/samples/quote-xquery/build.xml URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/build.xml?rev=577910&view=auto ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/build.xml (added) +++ incubator/tuscany/java/sca/samples/quote-xquery/build.xml Thu Sep 20 13:43:32 2007 @@ -0,0 +1,118 @@ +<!-- + * 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="sample-quote-xquery" default="compile"> + <property name="test.class" value="xquery.quote.XQueryQuoteClient" /> + <property name="test.server.class" value="xquery.quote.XQueryQuoteServer" /> + <property name="test.jar" value="sample-quote-xquery.jar" /> + + <target name="init"> + <mkdir dir="target/classes" /> + </target> + + <property name="tuscany.sca.manifest.location" value="../../lib/tuscany-sca-manifest.jar" /> + + <path id="project.classpath"> + <pathelement path="target/classes" /> + <pathelement path="target/sdo-source" /> + <pathelement location="${tuscany.sca.manifest.location}" /> + </path> + + <target name="generate-sdo" depends="init"> + <java classname="org.apache.tuscany.sdo.generate.XSD2JavaGenerator" fork="true"> + <arg value="-targetDirectory" /> + <arg value="target/sdo-source" /> + <arg value="-noNotification" /> + <arg value="-noContainment" /> + <arg value="-noUnsettable" /> + <arg value="src/main/resources/wsdl/Quote.xsd" /> + + <classpath refid="project.classpath" /> + </java> + <java classname="org.apache.tuscany.sdo.generate.XSD2JavaGenerator" fork="true"> + <arg value="-targetDirectory" /> + <arg value="target/sdo-source" /> + <arg value="-noNotification" /> + <arg value="-noContainment" /> + <arg value="-noUnsettable" /> + <arg value="src/main/resources/wsdl/AvailQuote.xsd" /> + + <classpath refid="project.classpath" /> + </java> + <java classname="org.apache.tuscany.sdo.generate.XSD2JavaGenerator" fork="true"> + <arg value="-targetDirectory" /> + <arg value="target/sdo-source" /> + <arg value="-noNotification" /> + <arg value="-noContainment" /> + <arg value="-noUnsettable" /> + <arg value="src/main/resources/wsdl/PriceQuote.xsd" /> + + <classpath refid="project.classpath" /> + </java> + + </target> + + + <target name="compile" depends="init, generate-sdo"> + <javac srcdir="src/main/java" destdir="target/classes" debug="on" source="1.5" target="1.5"> + <classpath refid="project.classpath" /> + </javac> + <copy todir="target/classes"> + <fileset dir="src/main/resources" /> + </copy> + <jar destfile="target/${test.jar}" basedir="target/classes"> + <manifest> + <attribute name="Main-Class" value="${test.class}" /> + </manifest> + </jar> + + </target> + + <target name="run-classes"> + <java classname="${test.class}" fork="true"> + <classpath> + <pathelement path="target/classes" /> + </classpath> + <classpath refid="project.classpath" /> + </java> + </target> + + <target name="run" depends="compile"> + <java classname="${test.class}" fork="true"> + <classpath> + <pathelement path="target/${test.jar}" /> + </classpath> + <classpath refid="project.classpath" /> + </java> + </target> + + <target name="run-server" depends="compile"> + <java classname="${test.server.class}" fork="true"> + <classpath> + <pathelement path="target/${test.jar}" /> + </classpath> + <classpath refid="project.classpath" /> + </java> + </target> + + <target name="clean"> + <delete quiet="true" includeemptydirs="true"> + <fileset dir="target" /> + </delete> + </target> +</project> Modified: incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/AvailQuoteProviderImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/AvailQuoteProviderImpl.java?rev=577910&r1=577909&r2=577910&view=diff ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/AvailQuoteProviderImpl.java (original) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/AvailQuoteProviderImpl.java Thu Sep 20 13:43:32 2007 @@ -25,6 +25,6 @@ public class AvailQuoteProviderImpl implements AvailQuoteProviderService { public AvailQuote provideAvailQuote(String dummyString) { - return TestHelper.buildAvailQuoteData(); + return QuoteDataUtil.buildAvailQuoteData(); } } Modified: incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/PriceQuoteProviderImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/PriceQuoteProviderImpl.java?rev=577910&r1=577909&r2=577910&view=diff ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/PriceQuoteProviderImpl.java (original) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/PriceQuoteProviderImpl.java Thu Sep 20 13:43:32 2007 @@ -22,6 +22,6 @@ public class PriceQuoteProviderImpl implements PriceQuoteProvider { public PriceQuote providePriceQuote() { - return TestHelper.buildPriceQuoteData(); + return QuoteDataUtil.buildPriceQuoteData(); } } Added: incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/QuoteDataUtil.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/QuoteDataUtil.java?rev=577910&view=auto ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/QuoteDataUtil.java (added) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/QuoteDataUtil.java Thu Sep 20 13:43:32 2007 @@ -0,0 +1,107 @@ +/* + * 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 xquery.quote; + +import java.io.IOException; +import java.math.BigInteger; + + +import org.example.avail.AvailFactory; +import org.example.avail.AvailQuote; +import org.example.avail.AvailRequest; +import org.example.price.PriceFactory; +import org.example.price.PriceQuote; +import org.example.price.PriceRequest; +import org.example.price.PriceRequests; +import org.example.price.ShipAddress; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.XMLHelper; + +public class QuoteDataUtil { + + public static AvailQuote buildAvailQuoteData() { + AvailQuote availQuote = AvailFactory.INSTANCE.createAvailQuote(); + AvailRequest availRequest = AvailFactory.INSTANCE.createAvailRequest(); + availRequest.setWidgetId(BigInteger.valueOf(12)); + availRequest.setRequestedQuantity(10); + availRequest.setQuantityAvail(true); + availRequest.setShipDate("2003-03-22"); + availQuote.getAvailRequest().add(availRequest); + + availRequest = AvailFactory.INSTANCE.createAvailRequest(); + availRequest.setWidgetId(BigInteger.valueOf(134)); + availRequest.setRequestedQuantity(345); + availRequest.setQuantityAvail(false); + availRequest.setShipDate("BackOrder"); + availQuote.getAvailRequest().add(availRequest); + + availRequest = AvailFactory.INSTANCE.createAvailRequest(); + availRequest.setWidgetId(BigInteger.valueOf(211)); + availRequest.setRequestedQuantity(100); + availRequest.setQuantityAvail(true); + availRequest.setShipDate("2003-04-21"); + availQuote.getAvailRequest().add(availRequest); + + return availQuote; + } + + public static PriceQuote buildPriceQuoteData() { + PriceQuote priceQuote = PriceFactory.INSTANCE.createPriceQuote(); + priceQuote.setCustomerName("Acme Inc"); + + ShipAddress shipAddress = PriceFactory.INSTANCE.createShipAddress(); + shipAddress.setStreet("12 Springs Rd"); + shipAddress.setCity("Morris Plains"); + shipAddress.setState("nj"); + shipAddress.setZip("07960"); + priceQuote.setShipAddress(shipAddress); + + PriceRequests priceRequests = PriceFactory.INSTANCE.createPriceRequests(); + PriceRequest priceRequest = PriceFactory.INSTANCE.createPriceRequest(); + priceRequest.setWidgetId(BigInteger.valueOf(12)); + priceRequest.setPrice(1.00f); + priceRequests.getPriceRequest().add(priceRequest); + + priceRequest = PriceFactory.INSTANCE.createPriceRequest(); + priceRequest.setWidgetId(BigInteger.valueOf(134)); + priceRequest.setPrice(34.10f); + priceRequests.getPriceRequest().add(priceRequest); + + priceRequest = PriceFactory.INSTANCE.createPriceRequest(); + priceRequest.setWidgetId(BigInteger.valueOf(211)); + priceRequest.setPrice(10.00f); + priceRequests.getPriceRequest().add(priceRequest); + + priceQuote.setPriceRequests(priceRequests); + + return priceQuote; + } + + public static void serializeToSystemOut(DataObject object, String name) { + XMLHelper helper = XMLHelper.INSTANCE; + + try { + helper.save(object, null, name, System.out); + System.out.println(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} Added: incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteClient.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteClient.java?rev=577910&view=auto ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteClient.java (added) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteClient.java Thu Sep 20 13:43:32 2007 @@ -0,0 +1,145 @@ +/* + * 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 xquery.quote; + +import org.apache.tuscany.sca.host.embedded.SCADomain; +import org.example.avail.AvailQuote; +import org.example.price.PriceQuote; +import org.example.quote.Quote; + +import commonj.sdo.DataObject; + +/** + * Integration test for the XQuery implementation type + * @version $Rev: 577067 $ $Date: 2007-09-18 22:10:03 +0100 (Tue, 18 Sep 2007) $ + * This test covers the most important integration scenarios for the xquery + * implementation type and its corresponding saxon data bindings: + * + * 1. There is a central component for invoking the different + * scenarios: QuoteJoinLocalComponent + * 2. It provides the following tests: + * - 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 + */ +public class XQueryQuoteClient { + + public static boolean SHOW_DEBUG_MSG = false; + + private SCADomain scaDomain; + + private QuoteJoinLocal quoteJoinLocal; + + public void startClient() throws Exception { + try { + scaDomain = SCADomain.newInstance("xqueryquotewsclient.composite"); + quoteJoinLocal = scaDomain.getService(QuoteJoinLocal.class, "QuoteJoinLocalComponent"); + } catch (Throwable t) { + t.printStackTrace(); + } + } + + public void testQuoteJoin() { + AvailQuote availQuote = QuoteDataUtil.buildAvailQuoteData(); + PriceQuote priceQuote = QuoteDataUtil.buildPriceQuoteData(); + + if (SHOW_DEBUG_MSG) { + System.out.println("Input quote for the price list:"); + QuoteDataUtil.serializeToSystemOut((DataObject)priceQuote, "priceQuote"); + System.out.println(); + System.out.println("Input quote for the availability:"); + QuoteDataUtil.serializeToSystemOut((DataObject)availQuote, "availQuote"); + System.out.println(); + } + + Quote quote = quoteJoinLocal.joinPriceAndAvailQuotes(priceQuote, availQuote, 0.1f); + if (SHOW_DEBUG_MSG) { + System.out.println(); + System.out.println("Output quote from local join:"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); + System.out.println(); + } + // TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + + quote = quoteJoinLocal.joinPriceAndAvailQuotes(priceQuote, availQuote, 0.2f); + if (SHOW_DEBUG_MSG) { + System.out.println(); + System.out.println("Output quote from local join (second invokation):"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); + System.out.println(); + } + // TestHelper.assertQuote(availQuote, priceQuote, quote, 0.2f); + + quote = quoteJoinLocal.joinPriceAndAvailQuotesWs(priceQuote, availQuote, 0.1f); + if (SHOW_DEBUG_MSG) { + System.out.println(); + System.out.println("Output quote from web service join:"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); + System.out.println(); + } + // TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + + quote = quoteJoinLocal.joinPriceAndAvailQuotes(); + if (SHOW_DEBUG_MSG) { + System.out.println(); + System.out.println("Output quote from properties join:"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); + System.out.println(); + } + // TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + + quote = quoteJoinLocal.joinPriceAndAvailQuotes(0.1f); + if (SHOW_DEBUG_MSG) { + System.out.println(); + System.out.println("Output quote from external references join:"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); + System.out.println(); + } + // TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + } + + public void stopClient() throws Exception { + if (scaDomain != null) { + scaDomain.close(); + } + } + + public static void main(String[] args) throws Exception { + SHOW_DEBUG_MSG = true; + XQueryQuoteClient client = new XQueryQuoteClient(); + client.startClient(); + try { + client.testQuoteJoin(); + } finally { + client.stopClient(); + } + } +} Added: incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteServer.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteServer.java?rev=577910&view=auto ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteServer.java (added) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/main/java/xquery/quote/XQueryQuoteServer.java Thu Sep 20 13:43:32 2007 @@ -0,0 +1,39 @@ +/* + * 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 xquery.quote; + +import java.io.IOException; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +public class XQueryQuoteServer { + + public static void main(String[] args) { + SCADomain scaDomain = SCADomain.newInstance("xqueryquotews.composite"); + try { + System.out.println("XQuery Quote server is started (press enter to shutdown)."); + System.in.read(); + System.out.println("XQuery Quote server is stopping..."); + } catch (IOException e) { + e.printStackTrace(); + } + scaDomain.close(); + System.out.println("XQuery Quote server is now stopped."); + } +} Modified: incubator/tuscany/java/sca/samples/quote-xquery/src/test/java/xquery/quote/XQueryQuoteClientTestCase.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/quote-xquery/src/test/java/xquery/quote/XQueryQuoteClientTestCase.java?rev=577910&r1=577909&r2=577910&view=diff ============================================================================== --- incubator/tuscany/java/sca/samples/quote-xquery/src/test/java/xquery/quote/XQueryQuoteClientTestCase.java (original) +++ incubator/tuscany/java/sca/samples/quote-xquery/src/test/java/xquery/quote/XQueryQuoteClientTestCase.java Thu Sep 20 13:43:32 2007 @@ -18,11 +18,19 @@ */ package xquery.quote; +import java.util.List; + +import junit.framework.TestCase; + import org.apache.tuscany.sca.host.embedded.SCADomain; import org.apache.tuscany.sca.host.embedded.SCATestCaseRunner; import org.example.avail.AvailQuote; +import org.example.avail.AvailRequest; import org.example.price.PriceQuote; +import org.example.price.PriceRequest; +import org.example.price.ShipAddress; import org.example.quote.Quote; +import org.example.quote.QuoteResponse; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -79,15 +87,15 @@ @Test public void testQuoteJoin() { - AvailQuote availQuote = TestHelper.buildAvailQuoteData(); - PriceQuote priceQuote = TestHelper.buildPriceQuoteData(); + AvailQuote availQuote = QuoteDataUtil.buildAvailQuoteData(); + PriceQuote priceQuote = QuoteDataUtil.buildPriceQuoteData(); if (SHOW_DEBUG_MSG) { System.out.println("Input quote for the price list:"); - TestHelper.serializeToSystemOut((DataObject)priceQuote, "priceQuote"); + QuoteDataUtil.serializeToSystemOut((DataObject)priceQuote, "priceQuote"); System.out.println(); System.out.println("Input quote for the availability:"); - TestHelper.serializeToSystemOut((DataObject)availQuote, "availQuote"); + QuoteDataUtil.serializeToSystemOut((DataObject)availQuote, "availQuote"); System.out.println(); } @@ -95,51 +103,90 @@ if (SHOW_DEBUG_MSG) { System.out.println(); System.out.println("Output quote from local join:"); - TestHelper.serializeToSystemOut((DataObject)quote, "quote"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); System.out.println(); } - TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + XQueryQuoteClientTestCase.assertQuote(availQuote, priceQuote, quote, 0.1f); quote = quoteJoinLocal.joinPriceAndAvailQuotes(priceQuote, availQuote, 0.2f); if (SHOW_DEBUG_MSG) { System.out.println(); System.out.println("Output quote from local join (second invokation):"); - TestHelper.serializeToSystemOut((DataObject)quote, "quote"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); System.out.println(); } - TestHelper.assertQuote(availQuote, priceQuote, quote, 0.2f); + XQueryQuoteClientTestCase.assertQuote(availQuote, priceQuote, quote, 0.2f); quote = quoteJoinLocal.joinPriceAndAvailQuotesWs(priceQuote, availQuote, 0.1f); if (SHOW_DEBUG_MSG) { System.out.println(); System.out.println("Output quote from web service join:"); - TestHelper.serializeToSystemOut((DataObject)quote, "quote"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); System.out.println(); } - TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + XQueryQuoteClientTestCase.assertQuote(availQuote, priceQuote, quote, 0.1f); quote = quoteJoinLocal.joinPriceAndAvailQuotes(); if (SHOW_DEBUG_MSG) { System.out.println(); System.out.println("Output quote from properties join:"); - TestHelper.serializeToSystemOut((DataObject)quote, "quote"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); System.out.println(); } - TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + XQueryQuoteClientTestCase.assertQuote(availQuote, priceQuote, quote, 0.1f); quote = quoteJoinLocal.joinPriceAndAvailQuotes(0.1f); if (SHOW_DEBUG_MSG) { System.out.println(); System.out.println("Output quote from external references join:"); - TestHelper.serializeToSystemOut((DataObject)quote, "quote"); + QuoteDataUtil.serializeToSystemOut((DataObject)quote, "quote"); System.out.println(); } - TestHelper.assertQuote(availQuote, priceQuote, quote, 0.1f); + XQueryQuoteClientTestCase.assertQuote(availQuote, priceQuote, quote, 0.1f); } @After public void stopClient() throws Exception { server.after(); scaDomain.close(); + } + + public static void assertQuote(AvailQuote availQuote, PriceQuote priceQuote, Quote quote, float taxRate) { + QuoteCalculatorImpl quoteCalculatorImpl = new QuoteCalculatorImpl(); + + TestCase.assertEquals(priceQuote.getCustomerName(), quote.getName()); + ShipAddress shipAddress = priceQuote.getShipAddress(); + TestCase.assertEquals(shipAddress.getStreet() + "," + + shipAddress.getCity() + + "," + + shipAddress.getState().toUpperCase() + + "," + + shipAddress.getZip(), quote.getAddress()); + List availRequests = availQuote.getAvailRequest(); + List priceRequests = priceQuote.getPriceRequests().getPriceRequest(); + List quoteResponses = quote.getQuoteResponse(); + TestCase.assertEquals(availRequests.size(), priceRequests.size()); + TestCase.assertEquals(availRequests.size(), quoteResponses.size()); + + for (int i = 0; i < availRequests.size(); i++) { + AvailRequest availRequest = (AvailRequest)availRequests.get(i); + PriceRequest priceRequest = (PriceRequest)priceRequests.get(i); + QuoteResponse quoteResponse = (QuoteResponse)quoteResponses.get(i); + TestCase.assertEquals(availRequest.getWidgetId(), quoteResponse.getWidgetId()); + TestCase.assertEquals(priceRequest.getPrice(), quoteResponse.getUnitPrice()); + TestCase.assertEquals(availRequest.getRequestedQuantity(), quoteResponse.getRequestedQuantity()); + TestCase.assertEquals(availRequest.isQuantityAvail(), quoteResponse.isFillOrder()); + if (availRequest.getShipDate() == null) { + TestCase.assertNull(quoteResponse.getShipDate()); + } else { + TestCase.assertEquals(availRequest.getShipDate(), quoteResponse.getShipDate()); + } + TestCase.assertEquals(taxRate, quoteResponse.getTaxRate()); + TestCase.assertEquals(quoteCalculatorImpl.calculateTotalPrice(taxRate, + availRequest.getRequestedQuantity(), + priceRequest.getPrice(), + availRequest.isQuantityAvail()), + quoteResponse.getTotalCost()); + } } } Propchange: incubator/tuscany/java/sca/tools/registry-inspector/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Thu Sep 20 13:43:32 2007 @@ -1 +1,5 @@ *.classpath +.externalToolBuilders +.project +.settings +target --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
