Hi,

I have written some extension for the XPathBuilder ( 
https://issues.apache.org/jira/browse/CAMEL-8273 ). While doing so, I stumbled 
over the following code:

        // okay we can try to remedy the failed conversion by some special types
        if (answer == null) {
            // let's try coercing some common types into something JAXP work 
with the best for special types
            if (body instanceof WrappedFile) {
                // special for files so we can work with them out of the box
                InputStream is = 
exchange.getContext().getTypeConverter().convertTo(InputStream.class, exchange, 
body);
                answer = new InputSource(is);
            } else if (body instanceof BeanInvocation) {
                // if its a null bean invocation then handle that specially
                BeanInvocation bi = 
exchange.getContext().getTypeConverter().convertTo(BeanInvocation.class, 
exchange, body);
                if (bi.getArgs() != null && bi.getArgs().length == 1 && 
bi.getArgs()[0] == null) {
                    // its a null argument from the bean invocation so use null 
as answer
                    answer = null;
                }
            } else if (body instanceof String) {
                answer = new InputSource(new StringReader((String) body));
            }
        }

The stuff for WrappedFile and String makes sense, but I actually don't 
understand the coding for the BeanInvocation body:
If the body is already of type BeanInvocation why using a type converter to 
convert it to BeanInvocation (wouldn't a cast be sufficient)?
If the bean invocation has exactly one argument and that is null, the answer is 
set to null (but if this code is reached it is already null).

>From my perspective the " else if (body instanceof BeanInvocation) " branch 
>can be removed without losing any functionality. Do I miss some side effect 
>there?

Best regards
Stphan

Reply via email to