[ https://issues.apache.org/jira/browse/CAMEL-8273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14293031#comment-14293031 ]
Stephan Siano commented on CAMEL-8273: -------------------------------------- It seems as if the issues with this solution are unresolveable. I have to withdraw this patch. Sorry for the hassle. > More flexible selection of default documentType in XPath expressions > -------------------------------------------------------------------- > > Key: CAMEL-8273 > URL: https://issues.apache.org/jira/browse/CAMEL-8273 > Project: Camel > Issue Type: Improvement > Components: camel-core > Reporter: Stephan Siano > Assignee: Claus Ibsen > Fix For: 2.15.0 > > Attachments: > 0001-CAMEL-8273-More-flexible-selection-of-default-docume.patch > > > In the current implementation of XPath if no documentType is defined (likely > in most cases) the document used for XPath evaluation is parsed into a (DOM) > Document using the JDK XML parser before applying the XPath expression on it. > For large documents this might be resource intensive, especially if the XPath > is evaluated using a more efficient parser like Saxon. > With the current implementation it is possible to workaround this by setting > a documentType attribute to the XPath expression, but doing this efficiently > requires some internal knowledge about the previous component in the camel > route (which type it creates) and the qualities of the used XML parser (e.g. > the JDK parser accepts only InputSource and Node as input types for XPath > evaluation whereas Saxon does also support other types like SAXSource). > The attached patch will make the data type used by default for XPath > evaluation more flexible (depending on the type of the input). > There are two cases to differentiate: > documentType is set on the XPath expression: > current implementation: > 1. try to convert to the documentType > 2. if that fails do some extra conversions for some additional data types > (WrappedFile, BeanInvocation, String) > 3. if that fails throw an exception > new implementation: > 1. try to convert to the documentType > 2. if that fails, use the message if it is of type Node, InputSource or > DOMSource or do some type conversions for specific data types (WrappedFile, > BeanInvocation, String, InputStream, Reader, byte[]...) > 3. if that fails throw an exception > documentType is not set on the XPath expresson > old implementation: > this is actually the same as if documentType was set to Document > new implementation: > 1. Use the message if it is of type Node, InputSource or DOMSource or do some > type conversions for specific data types (WrappedFile, BeanInvocation, > String, InputStream, Reader, byte[]...) (to InputSource) > 2. If the old message is not of one of the types above, convert to DOM > Document > 3. If this fails throw an Exception -- This message was sent by Atlassian JIRA (v6.3.4#6332)