What line in your C++ code is throwing the STAFInvalidObjectException exception?
-------------------------------------------------------------- Sharon Lucas IBM Austin, luc...@us.ibm.com (512) 286-7313 or Tieline 363-7313 From: "Dedhia, Hardik" <hardik.ded...@netapp.com> To: <staf-users@lists.sourceforge.net>, Sharon Lucas/Austin/IBM@IBMUS Date: 07/27/2011 09:50 AM Subject: Marshalling problem Hi, I am trying to send messages from a Java Interface to a c++ program using the following code: STAFHandle modify_handle = handle; STAFMapClassDefinition modifyClass = new STAFMapClassDefinition("STAF/Test/LogRecord"); modifyClass.addKey("message", "Message"); modifyClass.addKey("param", "Parameter"); modifyClass.addKey("value", "New value"); STAFMarshallingContext mc = new STAFMarshallingContext(); mc.setMapClassDefinition(modifyClass); Map modifyRecord = modifyClass.createInstance(); modifyRecord.put("message", "MODIFY"); modifyRecord.put("param", "ITERATIONS"); modifyRecord.put("value", "200"); mc.setRootObject(modifyRecord); String send = mc.marshall(); String wrappedMessage = STAFUtil.wrapData(send); System.out.println(wrappedMessage + hammer_handle); modify_handle.submit2(cyclMachine, "QUEUE", "QUEUE TYPE Modify MESSAGE " + wrappedMessage + " HANDLE " + hammer_handle); On the c++ code side, I use a QUEUE LIST to obtain the queued messages and process them. In Case of messages with TYPE Modify – this is the code I use to un-marshall the map: STAFString message = queueMap->get("message")->asString(); 259 cout << message << endl; 260 STAFObjectPtr mc = STAFObject::unmarshall(message, kSTAFIgnoreIndirectObjects); 261 STAFObjectPtr modifyList = mc->getRootObject(); 262 STAFObjectIteratorPtr iter = modifyList->iterate(); 263 264 while(iter->hasNext()) 265 { 266 STAFObjectPtr modifyQueueMap = iter->next(); 267 STAFString messg = modifyQueueMap->get("message")->asString(); 268 param = modifyQueueMap->get("param")->asString(); 269 value = modifyQueueMap->get("value")->asString(); 270 //param = param_str.c_str(); 271 //value = value_str.c_str(); 272 cout << "Message: " << messg << endl 273 << "Parameter to be changed: " << param << endl 274 << "New Value : " << value << endl; 275 276 int corrNum = NameConv(messg, handle_from); 277 int perform_action = perform_action = SwitchCase(corrNum); 278 int act_prfmd = 0; 279 if(perform_action == 1) 280 act_prfmd = switch_to_action(corrNum, handle_from); 281 return corrNum; 282 283 } It was working fine when I was sending messages to and from c++ programs but when I added the Java interface it gives me : terminate called after throwing an instance of 'STAFInvalidObjectException' Can you please point me to the fault in my code? Thanks so much, Hardik.
<<image/gif>>
------------------------------------------------------------------------------ Got Input? Slashdot Needs You. Take our quick survey online. Come on, we don't ask for help often. Plus, you'll get a chance to win $100 to spend on ThinkGeek. http://p.sf.net/sfu/slashdot-survey
_______________________________________________ staf-users mailing list staf-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/staf-users