From 200a40b332420f94992eb39a6d0ea1cf1490ffc4 Mon Sep 17 00:00:00 2001 From: coreyg Date: Fri, 21 Nov 2014 09:30:19 +0000 Subject: Adding tuscany's website to their svn repo for svnpubsub git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca-java-implementationxquery.html | 320 +++++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 site/trunk/site-publish/sca-java-implementationxquery.html (limited to 'site/trunk/site-publish/sca-java-implementationxquery.html') diff --git a/site/trunk/site-publish/sca-java-implementationxquery.html b/site/trunk/site-publish/sca-java-implementationxquery.html new file mode 100644 index 0000000000..43aca27959 --- /dev/null +++ b/site/trunk/site-publish/sca-java-implementationxquery.html @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + Apache Tuscany : SCA Java implementation.xquery + + + + + + + + + + + + + + + +
+ + + + +   + +
+ + +
+
+ + + + + + + + + +
+  Apache Tuscany > Home > SCA Overview > SCA Java > Java SCA Documentation Menu > SCA Java User Guide > SCA Java implementation.xquery + + User List | Dev List | Issue Tracker   +
+ + + + + + + +
+ + +
+ +
+
+ + +
+ + + + + + + + + + + +
Resources
+
+ +

<implementation.xquery>

+

Tuscany provides an implementation type to support XQuery. With this extension, the business logic can be implemented by XQuery scripts.

+ +

The XML configuration

+ +

<implementation.xquery> is declared under namespace "http://tuscany.apache.org/xmlns/sca/1.0". The location attribute specifies the XQuery script. It can be a file or resource name against the current classloader.

+ +
+
+    <component name="QuoteJoinComponent" xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+
+ +

Some examples

+
+
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://quote.xquery/client"
+    xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" xmlns:xq="http://quote.xquery/client"
+    name="xqueryquotewsclient">
+
+    ...
+    <component name="QuoteJoinComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+    <component name="QuoteJoinPropertiesComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join_properties.xq" />
+        <!-- Reset the default namespace as the sub-elements under pri:priceQuote are
+            unqualified -->
+        <property name="priceQuoteDoc">
+            <pri:priceQuote xmlns:pri="http://www.example.org/price" xmlns="">
+                <customerName>Acme Inc</customerName>
+                <shipAddress street="12 Springs Rd" city="Morris Plains" state="nj" zip="07960" />
+                <priceRequests>
+                    <priceRequest>
+                        <widgetId>12</widgetId>
+                        <price>1.0</price>
+                    </priceRequest>
+                    <priceRequest>
+                        <widgetId>134</widgetId>
+                        <price>34.1</price>
+                    </priceRequest>
+                    <priceRequest>
+                        <widgetId>211</widgetId>
+                        <price>10.0</price>
+                    </priceRequest>
+                </priceRequests>
+            </pri:priceQuote>
+        </property>
+        <!-- Reset the default namespace as the sub-elements under ava:availQuote are
+            unqualified -->
+
+        <property name="availQuoteDoc">
+            <ava:availQuote xmlns:ava="http://www.example.org/avail" xmlns="">
+                <availRequest>
+                    <widgetId>12</widgetId>
+                    <requestedQuantity>10</requestedQuantity>
+                    <quantityAvail>true</quantityAvail>
+                    <shipDate>2003-03-22</shipDate>
+                </availRequest>
+                <availRequest>
+                    <widgetId>134</widgetId>
+                    <requestedQuantity>345</requestedQuantity>
+                    <quantityAvail>false</quantityAvail>
+                    <shipDate>BackOrder</shipDate>
+                </availRequest>
+                <availRequest>
+                    <widgetId>211</widgetId>
+                    <requestedQuantity>100</requestedQuantity>
+                    <quantityAvail>true</quantityAvail>
+                    <shipDate>2003-04-21</shipDate>
+                </availRequest>
+            </ava:availQuote>
+        </property>
+        <property name="taxRate">0.1</property>
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+    </component>
+
+    <component name="QuoteJoinExternalReferencesComponent">
+        <tuscany:implementation.xquery location="META-INF/sca/quote_join_external_references.xq" />
+        <reference name="quoteCalculator" target="QuoteCalculatorComponent" />
+        <reference name="priceQuoteProvider" target="PriceQuoteProviderComponent" />
+    </component>
+    ...
+</composite>
+
+
+ + +

Decalre SCA services/references/properties using XQuery namespaces

+

Please note you can use the following syntax in the XQuery script to declare SCA services, references, and properties.

+ +
    +
  • scaservice:java/<java_interface_name>
  • +
  • scareference:java/<java_interface_name>
  • +
  • scaproperty:xml/<namespace>:<localName>
  • +
  • scaproperty:java/<java_class_name>
  • +
+ + +
+
+declare namespace quoteJoin="scaservice:java/xquery.quote.PropertiesQuoteJoin";
+
+declare namespace quoteCalculator="scareference:java/xquery.quote.QuoteCalculator";
+
+declare namespace priceQuoteDoc="scaproperty:xml/http://www.example.org/price:priceQuote";
+declare namespace availQuoteDoc="scaproperty:xml/http://www.example.org/avail:availQuote";
+declare namespace taxRate="scaproperty:java/java.lang.Float";
+
+declare namespace pri="http://www.example.org/price";
+declare namespace ava="http://www.example.org/avail";
+declare namespace quo="http://www.example.org/quote";
+
+declare variable $quoteCalculator external;
+
+declare variable $priceQuoteDoc external;
+declare variable $availQuoteDoc external;
+declare variable $taxRate external;
+
+declare function quoteJoin:joinPriceAndAvailQuotes() {
+<quo:quote>
+    <quo:name>{ data($priceQuoteDoc/pri:priceQuote/customerName) }</quo:name>
+    <quo:address>{ concat($priceQuoteDoc/pri:priceQuote/shipAddress/@street , ",", 
+    $priceQuoteDoc/pri:priceQuote/shipAddress/@city ,",", 
+    fn:upper-case($priceQuoteDoc/pri:priceQuote/shipAddress/@state) , ",", 
+    $priceQuoteDoc/pri:priceQuote/shipAddress/@zip) }</quo:address>
+    {
+        for $priceRequest in $priceQuoteDoc/pri:priceQuote/priceRequests/priceRequest,
+            $availRequest in $availQuoteDoc/ava:availQuote/availRequest
+        where data($priceRequest/widgetId) = data($availRequest/widgetId)
+        return
+            <quo:quoteResponse>
+                <quo:widgetId>{ data($priceRequest/widgetId) }</quo:widgetId>
+                <quo:unitPrice>{ data($priceRequest/price) }</quo:unitPrice>
+                <quo:requestedQuantity>{ data($availRequest/requestedQuantity) }</quo:requestedQuantity>
+                <quo:fillOrder>{ data($availRequest/quantityAvail) }</quo:fillOrder>
+                {
+                    for $shipDate in $availRequest/shipDate
+                    return
+                        <quo:shipDate>{ data($shipDate) }</quo:shipDate>
+                }
+                <quo:taxRate>{ $taxRate }</quo:taxRate>
+                <quo:totalCost>{ quoteCalculator:calculateTotalPrice(
+                				  $quoteCalculator,
+                				  
+                				  $taxRate,
+
+                                  $availRequest/requestedQuantity,
+
+                                  $priceRequest/price,
+
+                                  $availRequest/quantityAvail) }</quo:totalCost>
+            </quo:quoteResponse>
+    }
+    </quo:quote>
+};
+
+
+
+
+
+
+ + +
+ + + + + + website stats + + + + + + -- cgit v1.2.3