diff options
author | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-10-26 08:46:33 +0000 |
---|---|---|
committer | nash <nash@13f79535-47bb-0310-9956-ffa450edef68> | 2010-10-26 08:46:33 +0000 |
commit | 6f23eadf23acaaf2b9959ea53388b6e60a2d309a (patch) | |
tree | 493bfb570e59eabf8e99094fc10585d28166c920 /sca-java-1.x/trunk/demos/xml-bigbank/src/main/java/bigbank/AccountServiceImpl.java | |
parent | 758114996eea515967ae25389b8349c7cf573c19 (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.java | 55 |
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); |