diff options
Diffstat (limited to 'tags/cpp-0.1.incubating-M1-RC3b/sca/runtime/core/test/MyValue/MyValueImpl.cpp')
-rw-r--r-- | tags/cpp-0.1.incubating-M1-RC3b/sca/runtime/core/test/MyValue/MyValueImpl.cpp | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/tags/cpp-0.1.incubating-M1-RC3b/sca/runtime/core/test/MyValue/MyValueImpl.cpp b/tags/cpp-0.1.incubating-M1-RC3b/sca/runtime/core/test/MyValue/MyValueImpl.cpp new file mode 100644 index 0000000000..a6e10384e4 --- /dev/null +++ b/tags/cpp-0.1.incubating-M1-RC3b/sca/runtime/core/test/MyValue/MyValueImpl.cpp @@ -0,0 +1,150 @@ +/* + * + * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. + * + * 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. + */ + +/* $Rev$ $Date: 2005/12/22 11:33:21 $ */ + +#if defined(WIN32) || defined (_WINDOWS) +#pragma warning(disable: 4786) +#endif + +#include "MyValueImpl.h" +#include "CustomerInfo.h" +#include "StockQuoteService.h" +#include <iostream> +using namespace std; + +#include "osoa/sca/sca.h" +#include "commonj/sdo/SDO.h" + +using namespace osoa::sca; +using namespace commonj::sdo; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +MyValueImpl::MyValueImpl() +{ + cout << "Construct MyValueImpl" << endl; + +} + +MyValueImpl::~MyValueImpl() +{ + cout << "Destroy MyValueImpl" << endl; +} + +////////////////////////////////////////////////////////////////////// +// Other methods +////////////////////////////////////////////////////////////////////// +float MyValueImpl::getMyValue(const char *customerID) +{ + cout << "In getMyValue with customerid: " << customerID << endl; + + + ComponentContext myContext = ComponentContext::getCurrent(); + CustomerInfo* customerInfoService = (CustomerInfo*)myContext.getService("customerInfo"); + + if (customerInfoService == 0) + { + cout << "unable to find customer info service" << endl; + + return 0.0f; + } + + const char * stock; + try + { + stock = customerInfoService->getCustomerInformation(customerID); + } + catch(const char* x) + { + cout << "Exception caught: " << x <<endl; + throw; + } + + ServiceList serviceList = myContext.getServices("customerInfo"); + + for (unsigned int i=0; i<serviceList.size();i++) + { + CustomerInfo* service = (CustomerInfo*)(serviceList[i]); + stock = service->getCustomerInformation(customerID); + cout << "Stock from getServices " << i << " : " << stock <<endl; + + } + + // Use a second SCA reference to get the stock price + StockQuoteService* stockQuoteService = (StockQuoteService*)myContext.getService("stockQuote"); + + if (stockQuoteService == 0) + { + cout << "unable to find stock quote service" << endl; + + return 0.1f; + } + + // Create a data object representing the requests (use dynamic API until static is available) + DataObjectPtr requestDO; + + + // Invoke the service + string result = stockQuoteService->GetQuote("IBM"); + + cout << result<<endl; + float stockPrice = 0.0f; + + try + { + XMLHelperPtr xmlHelper = HelperProvider::getXMLHelper(myContext.getDataFactory()); + XMLDocumentPtr stockDoc = xmlHelper->load(result.c_str()); + if (stockDoc->getRootDataObject()) + { + stockPrice=stockDoc->getRootDataObject()->getFloat("Stock.0/Last"); + } + + } + catch (SDORuntimeException e) + { + cout << e; + throw; + } + + return stockPrice; +} + +float MyValueImpl::getMyValueS(const string& customerID) +{ + cout << "In getMyValueS with customerid: " << customerID.c_str() << endl; + return 87.35f; +} + +string MyValueImpl::getCustname(string& customerID) +{ + cout << "In getCustname with customerid: " << customerID.c_str() << endl; + customerID = "FRED"; + cout << "setting customer name to " << customerID.c_str() <<endl; + return "done"; +} + +static string fred("FEREDDEYY"); +const string& MyValueImpl::getCustnamecs(string customerID) +{ + cout << "In getCustname with customerid: " << customerID.c_str() << endl; + customerID = "FRED"; + cout << "setting customer name to " << customerID.c_str() <<endl; + return fred; +} |