summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank')
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountData.java36
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java48
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountService.java32
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java140
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java35
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java40
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java36
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java32
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java96
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java38
-rw-r--r--sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockValue.java38
11 files changed, 571 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountData.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountData.java
new file mode 100644
index 0000000000..c3ae8d0912
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountData.java
@@ -0,0 +1,36 @@
+/*
+ * 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.IOException;
+
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface AccountData {
+ /**
+ * Get the StAX stream that represent the accounts data
+ * @return The StAX stream containign the accounts
+ * @throws IOException
+ */
+ XMLStreamReader getAccounts() throws IOException;
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java
new file mode 100644
index 0000000000..1c0c612987
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.IOException;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(AccountData.class)
+public class AccountDataImpl implements AccountData {
+ private XMLInputFactory factory = XMLInputFactory.newInstance();
+
+ public XMLStreamReader getAccounts() throws IOException {
+ URL doc = getClass().getResource("/accounts.xml");
+ XMLStreamReader reader = null;
+ try {
+ reader = factory.createXMLStreamReader(doc.openStream());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return reader;
+ }
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountService.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountService.java
new file mode 100644
index 0000000000..4c72384e7b
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountService.java
@@ -0,0 +1,32 @@
+/*
+ * 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 AccountService {
+ /**
+ * Get the total value of all accounts owned by the customer
+ * @return The total value
+ */
+ double getTotalValue();
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
new file mode 100644
index 0000000000..2420c4eba0
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
@@ -0,0 +1,140 @@
+/*
+ * 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.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.spi.LoggerRepository;
+import org.apache.tuscany.sca.binding.ws.axis2.Axis2BindingInvoker;
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(AccountService.class)
+public class AccountServiceImpl implements AccountService {
+ private static final String STOCK_QUOTE_REQUEST =
+ "<q:symbol xmlns:q=\"http://www.webserviceX.NET/\">IBM</q:symbol>";
+
+ private XMLInputFactory factory = XMLInputFactory.newInstance();
+
+ @Reference
+ protected ExchangeRate exchangeRate;
+
+ @Reference
+ protected StockQuote stockQuote;
+
+ @Reference
+ protected AccountData accountData;
+
+ @Reference
+ protected StockValue stockValue;
+
+ @Property
+ protected String currency;
+
+ public double getTotalValue() {
+ try {
+ double rate = exchangeRate.getExchangeRate(currency);
+
+ System.out.println("Loading account data...");
+ XMLStreamReader accounts = accountData.getAccounts();
+
+ System.out.println("Getting stock quote...");
+ XMLStreamReader request = factory.createXMLStreamReader(new StringReader(STOCK_QUOTE_REQUEST));
+
+ // temporarily disable INFO logging before calling the web service
+ LoggerRepository repository = LogManager.getLoggerRepository();
+ Level threshold = repository.getThreshold();
+ repository.setThreshold(Level.WARN);
+
+ // first try to get a live stock quote from the web service
+ String xml = null;
+ try {
+ // set a small timeout value in case the server doesn't respond
+ Axis2BindingInvoker.GLOBAL_AXIS_TIMEOUT = 8000L;
+
+ OMElement quotes = stockQuote.GetQuote(request);
+ xml = quotes.getText();
+ if (!xml.startsWith("<")) {
+ System.out.println("Server responded: " + xml);
+ throw new IllegalStateException("Unexpected response from server");
+ }
+ } catch (ServiceRuntimeException e) {
+ // server isn't available, use local historical data
+
+ // restore the previous logging setting
+ } finally {
+ repository.setThreshold(threshold);
+ }
+
+ // if the web service invocation was successful, process the response
+ XMLStreamReader qts = null;
+ if (xml != null) {
+ System.out.println("Server responded: " + xml);
+ qts = factory.createXMLStreamReader(new StringReader(xml));
+
+ // if the web service isn't responding, continue with the demo using historical data
+ } else {
+ System.out.println("Stock price live quote not available, using historical data");
+ qts = factory.createXMLStreamReader(new StringReader(
+ "<StockQuotes>"+
+ "<Stock>"+
+ "<Symbol>IBM</Symbol>"+
+ "<Last>134.11</Last>"+
+ "<Date>9/24/2010</Date>"+
+ "<Time>4:00pm</Time>"+
+ "<Change>+2.44</Change>"+
+ "<Open>132.42</Open>"+
+ "<High>134.15</High>"+
+ "<Low>132.34</Low>"+
+ "<Volume>7122325</Volume>"+
+ "<MktCap>169.1B</MktCap>"+
+ "<PreviousClose>131.67</PreviousClose>"+
+ "<PercentageChange>+1.85%</PercentageChange>"+
+ "<AnnRange>116.00 - 134.25</AnnRange>"+
+ "<Earns>10.582</Earns>"+
+ "<P-E>12.44</P-E>"+
+ "<Name>International Bus</Name>"+
+ "</Stock>"+
+ "</StockQuotes>"));
+ }
+
+ System.out.println("Calculating total value...");
+ double value = stockValue.calculate(qts, accounts);
+
+ System.out.println("Total Value=USD " + value);
+
+ return value * rate;
+ } catch (Exception e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
new file mode 100644
index 0000000000..a7703787fb
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
@@ -0,0 +1,35 @@
+/*
+ * 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 org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * This client program to invoke the Account service
+ */
+public class BigBankClient {
+
+ public static void main(String[] args) throws Exception {
+
+ SCADomain domain = SCADomain.newInstance("BigBank.composite");
+ AccountService accountService = domain.getService(AccountService.class, "AccountService");
+
+ System.out.println("EUR: " + accountService.getTotalValue());
+ }
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java
new file mode 100644
index 0000000000..f5f1ca90b6
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java
@@ -0,0 +1,40 @@
+/*
+ * 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 org.apache.tuscany.sca.host.embedded.SCADomain;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BigBankServer {
+ public static void main(String[] args) throws Exception {
+
+ System.out.println("Starting the BigBank Service...");
+
+ SCADomain domain = SCADomain.newInstance("http://localhost", "/", "BigBank.composite");
+
+ System.out.println("Press Enter to Exit...");
+ System.in.read();
+
+ domain.close();
+ System.out.println("Bye");
+ }
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java
new file mode 100644
index 0000000000..bb8ff85f45
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java
@@ -0,0 +1,36 @@
+/*
+ * 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 org.osoa.sca.annotations.Remotable;
+
+import com.sun.syndication.feed.synd.SyndFeed;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface CurrencyExchange {
+ /**
+ * Get the currency exchange rates as a RSS feed
+ * @return
+ */
+ SyndFeed getRates();
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
new file mode 100644
index 0000000000..358e5e19a2
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java
@@ -0,0 +1,32 @@
+/*
+ * 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 {
+ /**
+ * Look up the exchange rate of a currency against USD
+ * @param currency The currency
+ * @return The exchange rate
+ */
+ double getExchangeRate(String currency);
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
new file mode 100644
index 0000000000..11c300cd3c
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
@@ -0,0 +1,96 @@
+/*
+ * 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.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+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.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndFeed;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(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);
+ }
+ }
+
+ /**
+ * Retrieve the live currency exchange rate from a live feed and extract the data for a given
+ * currecy using XPath
+ * @param currency The currency
+ * @return The exchange rate
+ */
+ public double getExchangeRate(String currency) {
+ try {
+ System.out.println("Retrieving exchange rate...");
+
+ // first try to get a live exchange rate quote from the RSS feed
+ SyndFeed feed = null;
+ try {
+ feed = exchangeRate.getRates();
+
+ // if the RSS feed isn't responding, continue with the demo using historical data
+ } catch (Exception e) {
+ System.out.println("Exchange rate live quote not available, using historical data");
+ return 0.74107;
+ }
+
+ // extract the exchange rate from the feed data
+ SyndEntry entry = (SyndEntry)feed.getEntries().get(0);
+ String rateTable = entry.getDescription().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);
+ }
+ }
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java
new file mode 100644
index 0000000000..26753a9e9e
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java
@@ -0,0 +1,38 @@
+/*
+ * 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 javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.om.OMElement;
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface StockQuote {
+ /**
+ * Invoke the stock quote web service to get the live quotes
+ * @param input The StAX stream of the request
+ * @return The StAX stream of the response
+ */
+ public OMElement GetQuote(XMLStreamReader input);
+}
diff --git a/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockValue.java b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockValue.java
new file mode 100644
index 0000000000..c300103398
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.6.2/demos/xml-bigbank/src/main/java/bigbank/StockValue.java
@@ -0,0 +1,38 @@
+/*
+ * 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 javax.xml.stream.XMLStreamReader;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface StockValue {
+ /**
+ * Join the quotes and accounts document to calculate the value
+ * @param quotes The quotes XML document
+ * @param accounts The accounts XML document
+ * @return The value
+ */
+ double calculate(XMLStreamReader quotes, XMLStreamReader accounts);
+}