
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68
320 lines
20 KiB
HTML
320 lines
20 KiB
HTML
|
||
<!--
|
||
|
||
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.
|
||
-->
|
||
|
||
|
||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<HTML>
|
||
<HEAD>
|
||
<!-- generateKeywords macro -->
|
||
<META name="description" content="Apache Tuscany">
|
||
<META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource">
|
||
<!-- generateKeywords macro end -->
|
||
|
||
<LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
|
||
<LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">
|
||
<TITLE>Apache Tuscany : SCA Java implementation.xquery</TITLE>
|
||
<META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
|
||
|
||
<BODY onload="init()">
|
||
<!-- topNav macro -->
|
||
<TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
|
||
<TR>
|
||
<TD valing="top" align="left">
|
||
<A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
|
||
</TD>
|
||
<TD>
|
||
<A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
|
||
</TD>
|
||
|
||
<TD width="100%">
|
||
|
||
</TD>
|
||
|
||
<!-- Adds the edit page link to the top banner-->
|
||
<TD valign="bottom">
|
||
<DIV style="padding: 2px 10px; margin: 0px;">
|
||
<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=66257">
|
||
<IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
|
||
</DIV>
|
||
</TD>
|
||
|
||
</TR>
|
||
</TABLE>
|
||
<!-- topNav macro end -->
|
||
|
||
<!-- breadCrumbs macro -->
|
||
<TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
|
||
<TR class="topBar">
|
||
<TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
|
||
<A href="home.html" title="Apache Tuscany">Apache Tuscany</A> > <A href="home.html" title="Home">Home</A> > <A href="sca-overview.html" title="SCA Overview">SCA Overview</A> > <A href="sca-java.html" title="SCA Java">SCA Java</A> > <A href="java-sca-documentation-menu.html" title="Java SCA Documentation Menu">Java SCA Documentation Menu</A> > <A href="sca-java-user-guide.html" title="SCA Java User Guide">SCA Java User Guide</A> > <A href="" title="SCA Java implementation.xquery">SCA Java implementation.xquery</A>
|
||
</TD>
|
||
|
||
<TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
|
||
<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
<!-- breadCrumbs macro end -->
|
||
|
||
|
||
<TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
|
||
<TR>
|
||
<TD align="left" valign="top">
|
||
|
||
<!-- pageContent macro -->
|
||
<DIV id="PageContent">
|
||
|
||
<DIV class="pagecontent">
|
||
<DIV class="wiki-content">
|
||
<TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR>
|
||
<TD class="confluenceTd" valign="top" width="15%">
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #C3CDA1;background-color: #C3CDA1;"><B>General</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="home.html" title="Home">Home</A><BR>
|
||
<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License </A><BR>
|
||
<A href="sca-java-get-involved.html" title="SCA Java Get Involved">Get Involved</A><BR>
|
||
<A href="sca-java-found-a-bug.html" title="SCA Java Found A Bug">Found a Bug?</A></P>
|
||
</DIV></DIV>
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>SCA Java</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sca-java.html" title="SCA Java">SCA Java Home</A><BR>
|
||
<A href="tuscany-dashboard.html" title="Tuscany Dashboard">SCA Dashboard</A><BR>
|
||
<A href="java-sca-tools.html" title="Java SCA Tools">Tools </A><BR>
|
||
<A href="tuscany-sca-java-faq.html" title="Tuscany SCA Java - FAQ">FAQ</A></P>
|
||
</DIV></DIV>
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>SCA Java 1.x</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sca-java-releases.html" title="SCA Java Releases">Downloads</A><BR>
|
||
<A href="java-sca-documentation-menu.html" title="Java SCA Documentation Menu">Documentation</A><BR>
|
||
<A href="https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk/" class="external-link" rel="nofollow">1.x Source Code</A><BR>
|
||
<A href="http://tinyurl.com/8rlxd3" class="external-link" rel="nofollow">Roadmap</A></P>
|
||
</DIV></DIV>
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>SCA Java 2.x</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sca-java-2x-releases.html" title="SCA Java 2.x Releases">Downloads</A><BR>
|
||
<A href="http://tuscany.apache.org/documentation-2x/" class="external-link" rel="nofollow">Documentation</A><BR>
|
||
<A href="https://svn.apache.org/repos/asf/tuscany/sca-java-2.x/trunk/" class="external-link" rel="nofollow">2.x Source Code</A><BR>
|
||
<A href="http://tinyurl.com/8rlxd3" class="external-link" rel="nofollow">Roadmap</A></P>
|
||
</DIV></DIV>
|
||
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Documentation</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="sca-java-user-guide.html" title="SCA Java User Guide">User Guide</A><BR>
|
||
<A href="sca-java-architecture-guide.html" title="SCA Java Architecture Guide">Architecture Guide</A><BR>
|
||
<A href="sca-java-development-guide.html" title="SCA Java Development Guide">Developer Guide</A><BR>
|
||
<A href="sca-java-extension-development-guide.html" title="SCA Java Extension Development Guide">Extension Developer Guide</A></P>
|
||
</DIV></DIV>
|
||
|
||
<DIV class="panel" style="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #b4b4b5;background-color: #C3CDA1;"><B>Resources</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1;">
|
||
<P><A href="tuscany-sca-java-faq.html" title="Tuscany SCA Java - FAQ">FAQ</A><BR>
|
||
<A href="https://svn.apache.org/repos/asf/incubator/tuscany/java/sca" class="external-link" rel="nofollow">Source Code</A></P>
|
||
</DIV></DIV>
|
||
</TD>
|
||
<TD class="confluenceTd" valign="top" width="85%">
|
||
|
||
<H3><A name="SCAJavaimplementation.xquery-%3Cimplementation.xquery%3E"></A><implementation.xquery></H3>
|
||
<P>Tuscany provides an implementation type to support XQuery. With this extension, the business logic can be implemented by XQuery scripts. </P>
|
||
|
||
<H3><A name="SCAJavaimplementation.xquery-TheXMLconfiguration"></A>The XML configuration</H3>
|
||
|
||
<P><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.</P>
|
||
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
<component name=<SPAN class="code-quote">"QuoteJoinComponent"</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN>>
|
||
</SPAN> <tuscany:implementation.xquery location=<SPAN class="code-quote">"META-INF/sca/quote_join.xq"</SPAN> />
|
||
<reference name=<SPAN class="code-quote">"quoteCalculator"</SPAN> target=<SPAN class="code-quote">"QuoteCalculatorComponent"</SPAN> />
|
||
</component>
|
||
</PRE>
|
||
</DIV></DIV>
|
||
|
||
<H3><A name="SCAJavaimplementation.xquery-Someexamples"></A>Some examples</H3>
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
<composite xmlns=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.osoa.org/xmlns/sca/1.0"</SPAN> targetNamespace=<SPAN class="code-quote">"http://quote.xquery/client"</SPAN>
|
||
</SPAN> xmlns:tuscany=<SPAN class="code-quote">"http:<SPAN class="code-comment">//tuscany.apache.org/xmlns/sca/1.0"</SPAN> xmlns:xq=<SPAN class="code-quote">"http://quote.xquery/client"</SPAN>
|
||
</SPAN> name=<SPAN class="code-quote">"xqueryquotewsclient"</SPAN>>
|
||
|
||
...
|
||
<component name=<SPAN class="code-quote">"QuoteJoinComponent"</SPAN>>
|
||
<tuscany:implementation.xquery location=<SPAN class="code-quote">"META-INF/sca/quote_join.xq"</SPAN> />
|
||
<reference name=<SPAN class="code-quote">"quoteCalculator"</SPAN> target=<SPAN class="code-quote">"QuoteCalculatorComponent"</SPAN> />
|
||
</component>
|
||
|
||
<component name=<SPAN class="code-quote">"QuoteJoinPropertiesComponent"</SPAN>>
|
||
<tuscany:implementation.xquery location=<SPAN class="code-quote">"META-INF/sca/quote_join_properties.xq"</SPAN> />
|
||
<!-- Reset the <SPAN class="code-keyword">default</SPAN> namespace as the sub-elements under pri:priceQuote are
|
||
unqualified -->
|
||
<property name=<SPAN class="code-quote">"priceQuoteDoc"</SPAN>>
|
||
<pri:priceQuote xmlns:pri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/price"</SPAN> xmlns="">
|
||
</SPAN> <customerName>Acme Inc</customerName>
|
||
<shipAddress street=<SPAN class="code-quote">"12 Springs Rd"</SPAN> city=<SPAN class="code-quote">"Morris Plains"</SPAN> state=<SPAN class="code-quote">"nj"</SPAN> zip=<SPAN class="code-quote">"07960"</SPAN> />
|
||
<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 <SPAN class="code-keyword">default</SPAN> namespace as the sub-elements under ava:availQuote are
|
||
unqualified -->
|
||
|
||
<property name=<SPAN class="code-quote">"availQuoteDoc"</SPAN>>
|
||
<ava:availQuote xmlns:ava=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/avail"</SPAN> xmlns="">
|
||
</SPAN> <availRequest>
|
||
<widgetId>12</widgetId>
|
||
<requestedQuantity>10</requestedQuantity>
|
||
<quantityAvail><SPAN class="code-keyword">true</SPAN></quantityAvail>
|
||
<shipDate>2003-03-22</shipDate>
|
||
</availRequest>
|
||
<availRequest>
|
||
<widgetId>134</widgetId>
|
||
<requestedQuantity>345</requestedQuantity>
|
||
<quantityAvail><SPAN class="code-keyword">false</SPAN></quantityAvail>
|
||
<shipDate>BackOrder</shipDate>
|
||
</availRequest>
|
||
<availRequest>
|
||
<widgetId>211</widgetId>
|
||
<requestedQuantity>100</requestedQuantity>
|
||
<quantityAvail><SPAN class="code-keyword">true</SPAN></quantityAvail>
|
||
<shipDate>2003-04-21</shipDate>
|
||
</availRequest>
|
||
</ava:availQuote>
|
||
</property>
|
||
<property name=<SPAN class="code-quote">"taxRate"</SPAN>>0.1</property>
|
||
<reference name=<SPAN class="code-quote">"quoteCalculator"</SPAN> target=<SPAN class="code-quote">"QuoteCalculatorComponent"</SPAN> />
|
||
</component>
|
||
|
||
<component name=<SPAN class="code-quote">"QuoteJoinExternalReferencesComponent"</SPAN>>
|
||
<tuscany:implementation.xquery location=<SPAN class="code-quote">"META-INF/sca/quote_join_external_references.xq"</SPAN> />
|
||
<reference name=<SPAN class="code-quote">"quoteCalculator"</SPAN> target=<SPAN class="code-quote">"QuoteCalculatorComponent"</SPAN> />
|
||
<reference name=<SPAN class="code-quote">"priceQuoteProvider"</SPAN> target=<SPAN class="code-quote">"PriceQuoteProviderComponent"</SPAN> />
|
||
</component>
|
||
...
|
||
</composite>
|
||
</PRE>
|
||
</DIV></DIV>
|
||
|
||
|
||
<H4><A name="SCAJavaimplementation.xquery-DecalreSCAservices%2Freferences%2FpropertiesusingXQuerynamespaces"></A>Decalre SCA services/references/properties using XQuery namespaces</H4>
|
||
<P>Please note you can use the following syntax in the XQuery script to declare SCA services, references, and properties.</P>
|
||
|
||
<UL>
|
||
<LI>scaservice:java/<java_interface_name></LI>
|
||
<LI>scareference:java/<java_interface_name></LI>
|
||
<LI>scaproperty:xml/<namespace>:<localName></LI>
|
||
<LI>scaproperty:java/<java_class_name></LI>
|
||
</UL>
|
||
|
||
|
||
<DIV class="code panel" style="border-width: 1px;"><DIV class="codeContent panelContent">
|
||
<PRE class="code-java">
|
||
declare namespace quoteJoin=<SPAN class="code-quote">"scaservice:java/xquery.quote.PropertiesQuoteJoin"</SPAN>;
|
||
|
||
declare namespace quoteCalculator=<SPAN class="code-quote">"scareference:java/xquery.quote.QuoteCalculator"</SPAN>;
|
||
|
||
declare namespace priceQuoteDoc=<SPAN class="code-quote">"scaproperty:xml/http:<SPAN class="code-comment">//www.example.org/price:priceQuote"</SPAN>;
|
||
</SPAN>declare namespace availQuoteDoc=<SPAN class="code-quote">"scaproperty:xml/http:<SPAN class="code-comment">//www.example.org/avail:availQuote"</SPAN>;
|
||
</SPAN>declare namespace taxRate=<SPAN class="code-quote">"scaproperty:java/java.lang.<SPAN class="code-object">Float</SPAN>"</SPAN>;
|
||
|
||
declare namespace pri=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/price"</SPAN>;
|
||
</SPAN>declare namespace ava=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/avail"</SPAN>;
|
||
</SPAN>declare namespace quo=<SPAN class="code-quote">"http:<SPAN class="code-comment">//www.example.org/quote"</SPAN>;
|
||
</SPAN>
|
||
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 , <SPAN class="code-quote">","</SPAN>,
|
||
$priceQuoteDoc/pri:priceQuote/shipAddress/@city ,<SPAN class="code-quote">","</SPAN>,
|
||
fn:upper-<SPAN class="code-keyword">case</SPAN>($priceQuoteDoc/pri:priceQuote/shipAddress/@state) , <SPAN class="code-quote">","</SPAN>,
|
||
$priceQuoteDoc/pri:priceQuote/shipAddress/@zip) }</quo:address>
|
||
{
|
||
<SPAN class="code-keyword">for</SPAN> $priceRequest in $priceQuoteDoc/pri:priceQuote/priceRequests/priceRequest,
|
||
$availRequest in $availQuoteDoc/ava:availQuote/availRequest
|
||
where data($priceRequest/widgetId) = data($availRequest/widgetId)
|
||
<SPAN class="code-keyword">return</SPAN>
|
||
<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>
|
||
{
|
||
<SPAN class="code-keyword">for</SPAN> $shipDate in $availRequest/shipDate
|
||
<SPAN class="code-keyword">return</SPAN>
|
||
<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>
|
||
};
|
||
|
||
</PRE>
|
||
</DIV></DIV></TD></TR></TBODY></TABLE>
|
||
</DIV>
|
||
</DIV>
|
||
</DIV>
|
||
<!-- pageContent macro end -->
|
||
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<!-- footer macro -->
|
||
<SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||
</SCRIPT>
|
||
<SCRIPT type="text/javascript">
|
||
_uacct = "UA-1174707-5";
|
||
urchinTracker();
|
||
</SCRIPT>
|
||
|
||
<A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>
|
||
|
||
<DIV class="footer">
|
||
Copyright <20> 2003-2012, The Apache Software Foundation </BR>
|
||
Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
|
||
</DIV>
|
||
<!-- footer macro end -->
|
||
|
||
</BODY>
|
||
</HTML>
|