Author: rfeng
Date: Mon Oct 8 14:36:37 2007
New Revision: 582983
URL: http://svn.apache.org/viewvc?rev=582983&view=rev
Log:
Some refactoring to better align the business functions
Added:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountService.java
- copied, changed from r582914,
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAsset.java
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
- copied, changed from r582914,
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAssetImpl.java
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
(with props)
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
(with props)
Removed:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAsset.java
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAssetImpl.java
Modified:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/BigBank.composite
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/stock.xq
Copied:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountService.java
(from r582914,
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAsset.java)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountService.java?p2=incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountService.java&p1=incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAsset.java&r1=582914&r2=582983&rev=582983&view=diff
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAsset.java
(original)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountService.java
Mon Oct 8 14:36:37 2007
@@ -23,6 +23,6 @@
/**
* @version $Rev$ $Date$
*/
-public interface CustomerAsset {
- double getTotalValue(String currency);
+public interface AccountService {
+ double getTotalValue();
}
Copied:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
(from r582914,
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAssetImpl.java)
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java?p2=incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java&p1=incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAssetImpl.java&r1=582914&r2=582983&rev=582983&view=diff
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/CustomerAssetImpl.java
(original)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
Mon Oct 8 14:36:37 2007
@@ -23,62 +23,46 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathFactory;
-import org.apache.tuscany.sca.databinding.xml.XMLStreamReader2Node;
import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
import org.osoa.sca.annotations.Service;
-import org.w3c.dom.Node;
-
-import com.sun.syndication.feed.atom.Entry;
-import com.sun.syndication.feed.atom.Feed;
/**
* @version $Rev$ $Date$
*/
[EMAIL PROTECTED](CustomerAsset.class)
-public class CustomerAssetImpl implements CustomerAsset {
[EMAIL PROTECTED](AccountService.class)
+public class AccountServiceImpl implements AccountService {
+ private static final String STOCK_QUOTE_REQUEST =
+ "<q:GetQuotes
xmlns:q=\"http://swanandmokashi.com\"><q:QuoteTicker>IBM,GOOG,MSFT</q:QuoteTicker></q:GetQuotes>";
+
private XMLInputFactory factory = XMLInputFactory.newInstance();
- @Reference(required = false)
- protected CurrencyExchange exchangeRate;
+ @Reference
+ protected ExchangeRate exchangeRate;
@Reference
protected StockQuote stockQuote;
- @Reference(required = false)
+ @Reference
protected AccountData accountData;
@Reference
protected StockValue stockValue;
- public double getTotalValue(String currency) {
+ @Property
+ protected String currency;
+
+ public double getTotalValue() {
try {
- System.out.println("Retrieving exchange rate...");
- Feed feed = exchangeRate.getRates();
- Entry entry = (Entry)feed.getEntries().get(0);
- String rateTable = entry.getSummary().getValue();
- // System.out.println(rateTable);
- XMLStreamReader rates = factory.createXMLStreamReader(new
StringReader(rateTable));
- XMLStreamReader2Node t = new XMLStreamReader2Node();
- Node node = t.transform(rates, null);
- XPath path = XPathFactory.newInstance().newXPath();
- XPathExpression exp = path.compile("/TABLE/TR[TD[1]='" +
currency.toUpperCase() + "']/TD[2]");
- Node rateNode = (Node)exp.evaluate(node, XPathConstants.NODE);
- double rate = Double.valueOf(rateNode.getTextContent().trim());
- System.out.println("Exchange rate: USD 1.0=" + currency + " " +
rate);
+ double rate = exchangeRate.getExchangeRate(currency);
System.out.println("Loading account data...");
XMLStreamReader accounts = accountData.getAccounts();
System.out.println("Getting stock quote...");
- String ticker =
- "<q:GetQuotes
xmlns:q=\"http://swanandmokashi.com\"><q:QuoteTicker>IBM,GOOG,MSFT</q:QuoteTicker></q:GetQuotes>";
- XMLStreamReader request = factory.createXMLStreamReader(new
StringReader(ticker));
+ XMLStreamReader request = factory.createXMLStreamReader(new
StringReader(STOCK_QUOTE_REQUEST));
XMLStreamReader quotes = stockQuote.GetStockQuotes(request);
Modified:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java?rev=582983&r1=582982&r2=582983&view=diff
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
(original)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
Mon Oct 8 14:36:37 2007
@@ -28,8 +28,8 @@
public static void main(String[] args) throws Exception {
SCADomain domain = SCADomain.newInstance("BigBank.composite");
- CustomerAsset ds = domain.getService(CustomerAsset.class,
"CustomerAsset");
+ AccountService accountService =
domain.getService(AccountService.class, "AccountService");
- System.out.println("EUR: " + ds.getTotalValue("EUR"));
+ System.out.println("EUR: " + accountService.getTotalValue());
}
}
Added:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java?rev=582983&view=auto
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
(added)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
Mon Oct 8 14:36:37 2007
@@ -0,0 +1,27 @@
+/*
+ * 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 bigbank;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface ExchangeRate {
+ double getExchangeRate(String currency);
+}
Propchange:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java?rev=582983&view=auto
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
(added)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
Mon Oct 8 14:36:37 2007
@@ -0,0 +1,85 @@
+/*
+ * 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 bigbank;
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import com.sun.syndication.feed.atom.Entry;
+import com.sun.syndication.feed.atom.Feed;
+
+/**
+ * @version $Rev$ $Date$
+ */
[EMAIL PROTECTED](ExchangeRate.class)
+public class ExchangeRateImpl {
+ @Reference
+ protected CurrencyExchange exchangeRate;
+
+ private final DocumentBuilder builder;
+
+ public ExchangeRateImpl() {
+ try {
+ builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ /**
+ * @return
+ * @throws XMLStreamException
+ * @throws XPathExpressionException
+ */
+ public double getExchangeRate(String currency) {
+ try {
+ System.out.println("Retrieving exchange rate...");
+ Feed feed = exchangeRate.getRates();
+ Entry entry = (Entry)feed.getEntries().get(0);
+ String rateTable = entry.getSummary().getValue();
+
+ Document doc = builder.parse(new
ByteArrayInputStream(rateTable.getBytes()));
+ Node node = doc.getDocumentElement();
+ XPath path = XPathFactory.newInstance().newXPath();
+ XPathExpression exp = path.compile("/TABLE/TR[TD[1]='" +
currency.toUpperCase() + "']/TD[2]");
+ Node rateNode = (Node)exp.evaluate(node, XPathConstants.NODE);
+ double rate = Double.valueOf(rateNode.getTextContent().trim());
+ System.out.println("Exchange rate: USD 1.0=" + currency + " " +
rate);
+ return rate;
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+}
Propchange:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/BigBank.composite
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/BigBank.composite?rev=582983&r1=582982&r2=582983&view=diff
==============================================================================
---
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/BigBank.composite
(original)
+++
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/BigBank.composite
Mon Oct 8 14:36:37 2007
@@ -20,11 +20,16 @@
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
targetNamespace="http://bigbank" name="BigBank">
- <component name="CustomerAsset">
- <implementation.java class="bigbank.CustomerAssetImpl" />
+ <component name="AccountService">
+ <implementation.java class="bigbank.AccountServiceImpl" />
<reference name="accountData" target="AccountData" />
<reference name="stockValue" target="StockValue" />
+ <reference name="exchangeRate" target="ExchangeRate"/>
+ <property name="currency">EUR</property>
+ </component>
+ <component name="ExchangeRate">
+ <implementation.java class="bigbank.ExchangeRateImpl" />
<reference name="exchangeRate">
<tuscany:binding.rss
uri="http://ansuz.sooke.bc.ca/rippy/exchange/?M=R&B=USD&F=CAD,CNY,EUR&T=F&S=O&I=S"
/>
@@ -37,12 +42,9 @@
<component name="StockValue">
<tuscany:implementation.xquery location="stock.xq" />
- <!--
- <property name="currency">USD</property>
- -->
</component>
- <reference name="StockQuoteReference" promote="CustomerAsset/stockQuote">
+ <reference name="StockQuoteReference" promote="AccountService/stockQuote">
<binding.ws
wsdlElement="http://swanandmokashi.com#wsdl.port(StockQuotes/StockQuotesSoap)"
/>
</reference>
Modified:
incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/stock.xq
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/stock.xq?rev=582983&r1=582982&r2=582983&view=diff
==============================================================================
--- incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/stock.xq
(original)
+++ incubator/tuscany/java/sca/demos/xml-bigbank/src/main/resources/stock.xq
Mon Oct 8 14:36:37 2007
@@ -21,7 +21,7 @@
declare namespace stock="scaservice:java/bigbank.StockValue";
(: declare namespace currency="scaproperty:java/java.lang.String"; :)
-declare function stock:calculate($quoteDoc, $accountDoc) {
+declare function stock:calculate($quoteDoc, $accountDoc) as xs:double {
let $checking :=
trace(
sum(
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]