package org.apache.synapse.util.xpath; import org.apache.synapse.MessageContext; import org.apache.synapse.SynapseConstants; import org.apache.synapse.SynapseException; import org.jaxen.UnresolvableException; import org.jaxen.VariableContext; import javax.xml.namespace.QName; import javax.xml.xpath.XPathVariableResolver; public class DOMSynapseXPathVariableResolver implements XPathVariableResolver { MessageContext synCtx; VariableContext parentVariableContext; public DOMSynapseXPathVariableResolver(VariableContext parentVariableContext, MessageContext synCtx) { this.parentVariableContext = parentVariableContext; this.synCtx = synCtx; } public Object resolveVariable(QName variable) { try { SynapseXPathVariableContext variableContext = new SynapseXPathVariableContext( parentVariableContext, synCtx); return variableContext.getVariableValue(SynapseConstants.SYNAPSE_NAMESPACE.equals( variable.getNamespaceURI())?null:variable.getNamespaceURI() , variable.getPrefix(), variable.getLocalPart()); } catch (UnresolvableException e) { throw new SynapseException("DOM Synapse XPATH variable resolution failed",e); } } }