/* | |
* Copyright 2004,2005 The Apache Software Foundation. | |
* | |
* Licensed 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 samples.databinding; | |
import org.apache.axiom.om.OMElement; | |
import org.apache.axiom.om.impl.builder.SAXOMBuilder; | |
import org.exolab.castor.xml.Marshaller; | |
import org.exolab.castor.xml.UnmarshalHandler; | |
import org.exolab.castor.xml.Unmarshaller; | |
import org.xml.sax.ContentHandler; | |
import org.xml.sax.SAXException; | |
import samples.databinding.data.GetStockQuote; | |
import samples.databinding.data.GetStockQuoteResponse; | |
import javax.xml.transform.TransformerException; | |
import javax.xml.transform.TransformerFactory; | |
import javax.xml.transform.sax.SAXResult; | |
import javanet.staxutils.StAXSource; | |
public final class StockClient { | |
public static void main(String[] args) throws Exception { | |
if (args.length != 2) { | |
System.err.println("Usage: StockClient <url> <symbol>"); | |
return; | |
} | |
final String url = args[0]; | |
final String symbol = args[1]; | |
System.out.println(); | |
System.out.println("Getting Stock Quote for " + symbol); | |
StockQuoteServiceStub stub = | |
new StockQuoteServiceStub(url); | |
stub._getServiceClient().getOptions().setAction("getStockQuote"); | |
GetStockQuote stockQuote = new GetStockQuote(); | |
stockQuote.setSymbol(symbol); | |
SAXOMBuilder builder = new SAXOMBuilder(); | |
Marshaller.marshal(stockQuote, builder); | |
OMElement response = stub.getStockQuote( | |
builder.getRootElement()); | |
StAXSource staxSource = | |
new StAXSource(response.getXMLStreamReader()); | |
Unmarshaller unmarshaller = new Unmarshaller(GetStockQuoteResponse.class); | |
UnmarshalHandler unmarshalHandler = unmarshaller.createHandler(); | |
GetStockQuoteResponse stockQuoteResponse; | |
try { | |
ContentHandler contentHandler = Unmarshaller.getContentHandler(unmarshalHandler); | |
TransformerFactory.newInstance().newTransformer().transform(staxSource, new SAXResult(contentHandler)); | |
stockQuoteResponse = (GetStockQuoteResponse) unmarshalHandler.getObject(); | |
} catch (SAXException e) { | |
throw new RuntimeException(e); | |
} catch (TransformerException e) { | |
throw new RuntimeException(e); | |
} | |
System.out.println("Price = " + stockQuoteResponse.getQuote().getLastTrade().getPrice()); | |
} | |
} |