tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tuscany: SCA Java implementation.xquery (page edited)
Date Mon, 24 Sep 2007 20:04:00 GMT
SCA Java implementation.xquery (TUSCANY) edited by Raymond Feng
      Page: http://cwiki.apache.org/confluence/display/TUSCANY/SCA+Java+implementation.xquery
   Changes: http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=66257&originalVersion=2&revisedVersion=3






Content:
---------------------------------------------------------------------

{section:border=false}
{column:width=15%}
{include: SCA Java Subproject Menu}
{include: Java SCA Menu New}
{column}
{column:width=85%}

h3. <implementation.xquery>
Tuscany provides an implementation type to support XQuery. 

h3. The XML configuration
{code}

    <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>

{code}

h3. Some examples
{code}
<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="QuoteJoinLocalComponent">
        <implementation.java class="xquery.quote.QuoteJoinLocalImpl" />
        <reference name="quoteJoin" target="QuoteJoinComponent" />
        <reference name="propertiesQuoteJoin" target="QuoteJoinPropertiesComponent" />
        <reference name="externalServicesQuoteJoin" target="QuoteJoinExternalReferencesComponent"
/>
    </component>

    <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>

    <component name="QuoteCalculatorComponent">
        <implementation.java class="xquery.quote.QuoteCalculatorImpl" />
    </component>

    <component name="PriceQuoteProviderComponent">
        <implementation.java class="xquery.quote.PriceQuoteProviderImpl" />
    </component>

    <reference name="availQuoteProvider" promote="QuoteJoinExternalReferencesComponent/availQuoteProvider">
        <interface.java interface="xquery.quote.AvailQuoteProviderService" />
        <binding.ws wsdlElement="http://quote.xquery#wsdl.port(AvailQuoteProviderService/AvailQuoteProviderSoapPort)"
/>
    </reference>
    <reference name="quoteJoinWs" promote="QuoteJoinLocalComponent/quoteJoinWs">
        <interface.java interface="xquery.quote.QuoteJoin" />
        <binding.ws wsdlElement="http://quote.xquery#wsdl.port(QuoteJoinService/QuoteJoinSoapPort)"
/>
    </reference>
</composite>
{code}

h4. The XQuery sample
{code}
declare namespace quoteJoin="scaservice:java/xquery.quote.QuoteJoin";

declare namespace quoteCalculator="scareference:java/xquery.quote.QuoteCalculator";

declare namespace quo="http://www.example.org/quote";

declare variable $quoteCalculator external;

declare function quoteJoin:joinPriceAndAvailQuotes($priceQuoteDoc, $availQuoteDoc, $taxRate)
{
<quo:quote>
    <quo:name>{ data($priceQuoteDoc/priceQuote/customerName) }</quo:name>
    <quo:address>{ concat($priceQuoteDoc/priceQuote/shipAddress/@street , ",", $priceQuoteDoc/priceQuote/shipAddress/@city
,",", fn:upper-case($priceQuoteDoc/priceQuote/shipAddress/@state) , ",", $priceQuoteDoc/priceQuote/shipAddress/@zip)
}</quo:address>
    {
        for $priceRequest in $priceQuoteDoc/priceQuote/priceRequests/priceRequest,
            $availRequest in $availQuoteDoc/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>
};

{code}
{column}
{section}


---------------------------------------------------------------------
CONFLUENCE INFORMATION
This message is automatically generated by Confluence

Unsubscribe or edit your notifications preferences
   http://cwiki.apache.org/confluence/users/viewnotifications.action

If you think it was sent incorrectly contact one of the administrators
   http://cwiki.apache.org/confluence/administrators.action

If you want more information on Confluence, or have a bug to report see
   http://www.atlassian.com/software/confluence



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org


Mime
View raw message