Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: multibinding/service/StockQuoteService.java


1   /*
2    * The Apache Software License, Version 1.1
3    *
4    *
5    * Copyright (c) 2001 The Apache Software Foundation.  All rights 
6    * reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer. 
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution,
21   *    if any, must include the following acknowledgment:  
22   *       "This product includes software developed by the
23   *        Apache Software Foundation (http://www.apache.org/)."
24   *    Alternately, this acknowledgment may appear in the software itself,
25   *    if and wherever such third-party acknowledgments normally appear.
26   *
27   * 4. The names "AXIS" and "Apache Software Foundation" must
28   *    not be used to endorse or promote products derived from this
29   *    software without prior written permission. For written 
30   *    permission, please contact apache@apache.org.
31   *
32   * 5. Products derived from this software may not be called "Apache",
33   *    nor may "Apache" appear in their name, without prior written
34   *    permission of the Apache Software Foundation.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the Apache Software Foundation.  For more
52   * information on the Apache Software Foundation, please see
53   * <http://www.apache.org/>.
54   */
55  
56  package multibinding.service;
57  
58  import org.w3c.dom.Document;
59  import org.w3c.dom.Element;
60  import org.w3c.dom.NodeList;
61  
62  import javax.xml.parsers.DocumentBuilder;
63  import javax.xml.parsers.DocumentBuilderFactory;
64  import java.net.URL;
65  
66  /**
67   *
68   * @author Sanjiva Weerawarana (sanjiva@watson.ibm.com)
69   * @author Doug Davis (dug@us.ibm.com)
70   */
71  public class StockQuoteService {
72    public float getQuote (String symbol) throws Exception {
73      // get a real (delayed by 20min) stockquote from 
74      // http://www.xmltoday.com/examples/stockquote/. The IP addr 
75      // below came from the host that the above form posts to ..
76  
77      if ( symbol.equals("XXX") ) return( (float) 55.25 );
78  
79      URL          url = new URL( "http://services.xmethods.net/" +
80                                  "axis/getQuote?s="+symbol );
81  
82      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
83      DocumentBuilder        db  = dbf.newDocumentBuilder();
84  
85      Document doc  = db.parse( url.toExternalForm() );
86      Element  elem = doc.getDocumentElement();
87      NodeList list = elem.getElementsByTagName( "stock_quote" );
88  
89      if ( list != null && list.getLength() != 0 ) {
90        elem = (Element) list.item(0);
91        list = elem.getElementsByTagName( "price" );
92        elem = (Element) list.item(0);
93        String quoteStr = elem.getAttribute("value");
94        try {
95          return Float.valueOf(quoteStr).floatValue();
96        } catch (NumberFormatException e1) {
97          // maybe its an int?
98          try {
99            return Integer.valueOf(quoteStr).intValue() * 1.0F;
100         } catch (NumberFormatException e2) {
101           return -1.0F;
102         }
103       }
104     }
105     return( 0 );
106   }
107 }