All,

I am getting the error: java.lang.RuntimeException: Could not resolve the node 
to a handle
The error is very odd as it runs the first node successfully but throws an 
exception on the second node, regardless of which node is executed ( I moved 
the xml nodes around in the XML file).  

Basically the program is parsing 2 files.  I file is the xml client data (No 
problems even though I traverse the tree up and down) and the other is an xml 
config file with xpath expressions in it.  An example of the xml I am trying to 
run is (this is the xml config file):
<!-- Runs fine -->
<FieldMapping identifier="1.SubmissionType" xpath="SubmissionTypeCode/text()" 
converter="com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter">
        <ConverterAdditionalMapping>
                <LookUpInfo constant="SF424_SUBMISSION_TYPE/>
        </ConverterAdditionalMapping>
</FieldMapping>
                
<!-- exception is thrown -->            
<FieldMapping identifier="2.ApplicationType" xpath="ApplicationTypeCode/text()" 
converter="com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter">
        <ConverterAdditionalMapping>
                <LookUpInfo constant="SF424_APPLICANT_TYPE"/>
        </ConverterAdditionalMapping>
</FieldMapping>

The java code that is calling the xpath is:
//Note that this is recreated for every node.  Is this part of the problem?????
XPathFactory xpathfactory= XPathFactory.newInstance();

XPath xpath  = xpathfactory.newXPath();

//converterAdditionalMappingNode is the <ConverterAdditionalMapping> node
String lookupConstant = (String)xpath.evaluate("LookUpInfo/@constant", 
converterAdditionalMappingNode, XPathConstants.STRING);
                        

Note that I have XMLBean'ed the config file so that I can traverse it with 
objects, however the <ConverterAdditionalMapping> node is supposed to be client 
specific and therefore cannot be XMLBean'ed.

Why is there a problem with this?
The stack trace is:
Caused by: java.lang.RuntimeException: Could not resolve the node to a handle
        at 
org.apache.xml.dtm.ref.DTMManagerDefault.getDTMHandleFromNode(DTMManagerDefault.java:625)
        at 
org.apache.xpath.XPathContext.getDTMHandleFromNode(XPathContext.java:220)
        at org.apache.xpath.XPath.execute(XPath.java:274)
        at org.apache.xpath.jaxp.XPathImpl.eval(XPathImpl.java:210)
        at org.apache.xpath.jaxp.XPathImpl.evaluate(XPathImpl.java:275)
        at 
com.infoterra.grantium.service.integration.datamapper.converters.impl.LookupConverter.convertSimpleData(LookupConverter.java:48)
        ... 27 more

I am trying to create a work around for now, but this will become a much larger 
issue once the client configs become increasingly complicated.


Thanks in advance for any and all advice,
Rhys Parry
Product Development

Infoterra Inc. - Leadership in Enterprise Grants Management (EGM) Solutions
Phone #: 613-230-7890 Ext: 239
Fax #: 613-230-5243 

Reply via email to