Hi Mike,
Are you doing a graphical mapping for the soapLookup? If so, can you show me a screenshot of where you have placed that? I think the idea would be to setup the mapping of the source and target messages like this:
for the soapLookup function you would need something like this that represents the XML string at the end of the UDF:
result.addValue(xmlStr);
for the buildHashMap function the basic structure of it would look like this maybe:
HashMap matMap<String, ArrayList<String>> = new HashMap<String, ArrayList<String>>(); // Put your XML parsing code here with reference to val1[0] container.getGlobalContainer(); container.setParameter("matmap", matMap); result.addValue("");
So in the soapLookup function you would add one full XML string to the result list that would then get parsed in the next UDF for building the hash map. You instantiate the HashMap at the start and then build it with that other code you had. Then at the end you would call the GlobalContainer to store the map with some name so you can get it back. The last bit for adding a result value is so that the target message root node would get created based on the results of the buildHashMap UDF. For something like this since you only want it to execute once you could do "All Values of Queue" for the execution type. Then for the fields where you need to read the HashMap tuple values you can call the following code:
HashMap matMap<String, ArrayList<String>> = (HashMap<String, ArrayList<String>>) container.getGlobalContainer.getParameter("matmap");
Hope this helps you fit it together...
Regards,
Ryan Crosby