summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main')
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountData.java36
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java48
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountService.java32
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java80
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java35
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java40
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java36
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java32
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java84
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java37
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockValue.java38
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/BigBank.composite51
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/accounts.xml29
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/customer.xsd46
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/quotes.xml74
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/stock.xq52
-rw-r--r--sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl23
17 files changed, 773 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountData.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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.1/demos/xml-bigbank/src/main/java/bigbank/AccountDataImpl.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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.1/demos/xml-bigbank/src/main/java/bigbank/AccountService.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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.1/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
new file mode 100644
index 0000000000..6b89ac4212
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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.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:GetQuotes xmlns:q=\"http://swanandmokashi.com\"><q:QuoteTicker>IBM,GOOG,MSFT</q:QuoteTicker></q:GetQuotes>";
+
+ 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));
+
+ XMLStreamReader quotes = stockQuote.GetStockQuotes(request);
+
+ System.out.println("Calculating total value...");
+ double value = stockValue.calculate(quotes, 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.1/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/BigBankClient.java
new file mode 100644
index 0000000000..5695c276b4
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/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 Mortgage LoanApproval 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.1/demos/xml-bigbank/src/main/java/bigbank/BigBankServer.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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.1/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/CurrencyExchange.java
new file mode 100644
index 0000000000..8c133f5083
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/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.atom.Feed;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Remotable
+public interface CurrencyExchange {
+ /**
+ * Get the currency exchange rates as a RSS feed
+ * @return
+ */
+ Feed getRates();
+}
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRate.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
new file mode 100644
index 0000000000..8fe76fb1ea
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/ExchangeRateImpl.java
@@ -0,0 +1,84 @@
+/*
+ * 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.atom.Entry;
+import com.sun.syndication.feed.atom.Feed;
+
+/**
+ * @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...");
+ 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);
+ }
+ }
+}
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java
new file mode 100644
index 0000000000..e58c4ff82e
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockQuote.java
@@ -0,0 +1,37 @@
+/*
+ * 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 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 XMLStreamReader GetStockQuotes(XMLStreamReader input);
+}
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/java/bigbank/StockValue.java b/sca-java-1.x/branches/sca-java-1.1/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.1/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);
+}
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/BigBank.composite b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/BigBank.composite
new file mode 100644
index 0000000000..eef9321de5
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/BigBank.composite
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<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="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&amp;B=USD&amp;F=CAD,CNY,EUR&amp;T=F&amp;S=O&amp;I=S" />
+ </reference>
+ </component>
+
+ <component name="AccountData">
+ <implementation.java class="bigbank.AccountDataImpl" />
+ </component>
+
+ <component name="StockValue">
+ <tuscany:implementation.xquery location="stock.xq" />
+ </component>
+
+ <reference name="StockQuoteReference" promote="AccountService/stockQuote">
+ <binding.ws wsdlElement="http://swanandmokashi.com#wsdl.port(StockQuotes/StockQuotesSoap)" />
+ </reference>
+
+</composite>
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/accounts.xml b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/accounts.xml
new file mode 100644
index 0000000000..52ffd41fa7
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/accounts.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<customer id="123" xmlns="http://example.com/customer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <firstName>John</firstName>
+ <lastName>Smith</lastName>
+ <accounts>
+ <checking id="C01" balance="1000.0"></checking>
+ <saving id="S01" balance="20000.0"></saving>
+ <stock symbol="IBM" quantity="500" />
+ <stock symbol="MSFT" quantity="200" />
+ </accounts>
+</customer> \ No newline at end of file
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/customer.xsd b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/customer.xsd
new file mode 100644
index 0000000000..b22efb74c4
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/customer.xsd
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://exmaple.com/customer"
+ targetNamespace="http://exmaple.com/customer" elementFormDefault="qualified">
+ <element name="customer" type="tns:Customer" />
+ <complexType name="Customer">
+ <sequence>
+ <element name="id" type="string"></element>
+ <element name="firstName" type="string"></element>
+ <element name="lastName" type="string"></element>
+ <element name="accounts" type="string"></element>
+ </sequence>
+ </complexType>
+ <complexType name="Accounts">
+ <choice>
+ <element name="checking" type="tns:Account"></element>
+ <element name="saving" type="tns:Account"></element>
+ <element name="stock" type="tns:Stock"></element>
+ </choice>
+ </complexType>
+ <complexType name="Account">
+ <attribute name="id" type="string"></attribute>
+ <attribute name="balance" type="float"></attribute>
+ </complexType>
+ <complexType name="Stock">
+ <attribute name="symbol" type="string"></attribute>
+ <attribute name="quantity" type="int"></attribute>
+ </complexType>
+</schema> \ No newline at end of file
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/quotes.xml b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/quotes.xml
new file mode 100644
index 0000000000..5ab0b2687f
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/quotes.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<GetQuotesResponse xmlns="http://swanandmokashi.com">
+ <GetQuotesResult>
+ <Quote>
+ <CompanyName>INTL BUSINESS MAC</CompanyName>
+ <StockTicker>IBM</StockTicker>
+ <StockQuote>116.40</StockQuote>
+ <LastUpdated>10/3/2007 4:01pm</LastUpdated>
+ <Change>-1.96</Change>
+ <OpenPrice>117.65</OpenPrice>
+ <DayHighPrice>117.84</DayHighPrice>
+ <DayLowPrice>116.28</DayLowPrice>
+ <Volume>7892471</Volume>
+ <MarketCap>158.4B</MarketCap>
+ <YearRange>81.56 - 119.60</YearRange>
+ <ExDividendDate>Aug 8</ExDividendDate>
+ <DividendYield>1.18</DividendYield>
+ <DividendPerShare>1.40</DividendPerShare>
+ <PercentChange>-1.66%</PercentChange>
+ </Quote>
+ <Quote>
+ <CompanyName>GOOGLE</CompanyName>
+ <StockTicker>GOOG</StockTicker>
+ <StockQuote>584.0199</StockQuote>
+ <LastUpdated>10/3/2007 4:00pm</LastUpdated>
+ <Change>-0.3701</Change>
+ <OpenPrice>586.25</OpenPrice>
+ <DayHighPrice>588.99</DayHighPrice>
+ <DayLowPrice>580.36</DayLowPrice>
+ <Volume>3869172</Volume>
+ <MarketCap>182.3B</MarketCap>
+ <YearRange>398.19 - 596.81</YearRange>
+ <ExDividendDate>N/A</ExDividendDate>
+ <DividendYield>N/A</DividendYield>
+ <DividendPerShare>0.00</DividendPerShare>
+ <PercentChange>-0.06%</PercentChange>
+ </Quote>
+ <Quote>
+ <CompanyName>MICROSOFT CP</CompanyName>
+ <StockTicker>MSFT</StockTicker>
+ <StockQuote>29.4525</StockQuote>
+ <LastUpdated>10/3/2007 4:00pm</LastUpdated>
+ <Change>-0.2475</Change>
+ <OpenPrice>29.57</OpenPrice>
+ <DayHighPrice>29.85</DayHighPrice>
+ <DayLowPrice>29.29</DayLowPrice>
+ <Volume>37324944</Volume>
+ <MarketCap>276.1B</MarketCap>
+ <YearRange>26.60 - 31.84</YearRange>
+ <ExDividendDate>Aug 14</ExDividendDate>
+ <DividendYield>1.35</DividendYield>
+ <DividendPerShare>0.40</DividendPerShare>
+ <PercentChange>-0.83%</PercentChange>
+ </Quote>
+ </GetQuotesResult>
+</GetQuotesResponse>
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/stock.xq b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/stock.xq
new file mode 100644
index 0000000000..42a5b906c2
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/stock.xq
@@ -0,0 +1,52 @@
+(:
+ * 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.
+:)
+declare namespace q="http://swanandmokashi.com";
+declare namespace c="http://example.com/customer";
+declare namespace stock="scaservice:java/bigbank.StockValue";
+(: declare namespace currency="scaproperty:java/java.lang.String"; :)
+
+declare function stock:calculate($quoteDoc, $accountDoc) as xs:double {
+ let $checking :=
+ trace(
+ sum(
+ for $a in $accountDoc/c:customer/c:accounts/c:checking
+ return $a/@balance
+ ), "Checking Balance")
+
+ let $saving :=
+ trace(
+ sum(
+ for $a in $accountDoc/c:customer/c:accounts/c:saving
+ return $a/@balance
+ ), "Saving Blance")
+
+ let $value :=
+ trace(
+ sum(
+ for $quote in $quoteDoc/q:GetQuotesResponse/q:GetQuotesResult/q:Quote,
+ $account in $accountDoc/c:customer/c:accounts/c:stock
+ where string($quote/q:StockTicker) = string($account/@symbol)
+ return
+ trace(number($quote/q:StockQuote),"Stock Price") * trace(number($account/@quantity), "Quantity")
+ ), "Stock Value")
+ return trace($checking + $saving + $value, "Total Value")
+};
+
+
+
diff --git a/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl
new file mode 100644
index 0000000000..e64f3f5091
--- /dev/null
+++ b/sca-java-1.x/branches/sca-java-1.1/demos/xml-bigbank/src/main/resources/wsdl/StockQuotes.wsdl
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * 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.
+-->
+<wsdl:definitions targetNamespace="http://swanandmokashi.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:import namespace="http://swanandmokashi.com"
+ location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx?WSDL" />
+</wsdl:definitions> \ No newline at end of file