summaryrefslogtreecommitdiffstats
path: root/sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
diff options
context:
space:
mode:
authornash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-10-26 08:46:33 +0000
committernash <nash@13f79535-47bb-0310-9956-ffa450edef68>2010-10-26 08:46:33 +0000
commit6f23eadf23acaaf2b9959ea53388b6e60a2d309a (patch)
tree493bfb570e59eabf8e99094fc10585d28166c920 /sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
parent758114996eea515967ae25389b8349c7cf573c19 (diff)
Merge r1001526 TUSCANY-3690: Handle unavailability of live RSS feed or web service by using historical data
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1027405 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java')
-rw-r--r--sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java55
1 files changed, 51 insertions, 4 deletions
diff --git a/sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java b/sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
index 00fce39462..46995de393 100644
--- a/sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
+++ b/sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java
@@ -25,6 +25,9 @@ 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.osoa.sca.ServiceRuntimeException;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
@@ -65,11 +68,55 @@ public class AccountServiceImpl implements AccountService {
System.out.println("Getting stock quote...");
XMLStreamReader request = factory.createXMLStreamReader(new StringReader(STOCK_QUOTE_REQUEST));
- OMElement quotes = stockQuote.GetQuote(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 {
+ OMElement quotes = stockQuote.GetQuote(request);
+ xml = quotes.getText();
+ } catch (Exception e) {
+
+ // 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 && xml.startsWith("<")) {
+ System.out.println(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>"));
+ }
- String xml = quotes.getText();
- System.out.println(xml);
- XMLStreamReader qts = factory.createXMLStreamReader(new StringReader(xml));
System.out.println("Calculating total value...");
double value = stockValue.calculate(qts, accounts);