#if defined(WIN32) || defined (_WINDOWS) #pragma warning(disable: 4786) #endif #include "StockQuoteServiceImpl.h" #include "StockQuoteExternalService.h" #include "osoa/sca/sca.h" #include "commonj/sdo/SDO.h" using namespace osoa::sca; using namespace commonj::sdo; namespace com{ namespace bigbank{ namespace stockquote { float StockQuoteServiceImpl::getQuote(const char *symbol) { ComponentContext myContext = ComponentContext::getCurrent(); // Use an SCA reference to get the stock price StockQuoteExternalService* stockQuoteExternalService = (StockQuoteExternalService*)myContext. getService("StockQuoteExternal"); if (stockQuoteExternalService == 0) { std::cout << "unable to find external stock quote service" << std::endl; return 0.1f; } // Create a data object representing the requests (use dynamic API until static is available) DataObjectPtr requestDO; // Invoke the service const char* result = stockQuoteExternalService->GetQuote(symbol); //std::cout << result<< std::endl; float stockPrice = 0.0f; try { XMLHelperPtr xmlHelper = HelperProvider::getXMLHelper(myContext.getDataFactory()); XMLDocumentPtr stockDoc = xmlHelper->load(result); if (stockDoc->getRootDataObject()) { stockPrice=stockDoc->getRootDataObject()->getFloat("Stock.0/Last"); } } catch (SDORuntimeException e) { std::cout << e << std::endl; return 0.0f; } return stockPrice; } } } }