You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Ming Fang <mi...@mac.com> on 2009/12/07 19:52:06 UTC

Can't return null with Camel remoting

Camel v2.1 no longer allow remote service to return null value.
I'm getting a InvalidPayloadException in CamelInvocationHandler.invoke 
().

This is a bug since it is legal to return null values.

--Ming

Re: Can't return null with Camel remoting

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Thanks for reporting this and providing a test to demonstrate the issue.

I have created a ticket
https://issues.apache.org/activemq/browse/CAMEL-2274

And committed a fix in rev: 889160.


On Thu, Dec 10, 2009 at 12:32 AM, Ming Fang <mi...@mac.com> wrote:
> Sorry I sent the original message from my iPhone, hoping it was a known issue and a quick workaround.
> Below is a small program showing the problem.
> Change the camel version in the pom from 2.0.0 to 2.1.0 to see the error.
>
> RCPTest.java
>
> package test;
>
> import org.apache.camel.CamelContext;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.component.bean.ProxyHelper;
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.log4j.*;
>
> public class RPCTest {
>
>    public static void main(String[] args) throws Exception {
>        Logger.getRootLogger().addAppender(new ConsoleAppender(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN)));
>
>        CamelContext camelContext = new DefaultCamelContext();
>        camelContext.addRoutes(new RouteBuilder() {
>            public void configure() {
>                from("vm:echo").bean(new Echo() {
>                    public String echo(String text) {
>                        return text;
>                    }
>                });
>            }
>        });
>        camelContext.start();
>
>        Echo service = ProxyHelper.createProxy(camelContext.getEndpoint("vm:echo"), Echo.class);
>        //prints "test"
>        System.out.println(service.echo("test"));
>        //prints "null" for Camel 2.0 but error for Camel 2.1
>        System.out.println(service.echo(null));
>    }
>
>    public static interface Echo{
>        String echo(String text);
>    }
> }
>
> pom.xml
>
> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
>    <modelVersion>4.0.0</modelVersion>
>    <groupId>test</groupId>
>    <artifactId>jmsproblem</artifactId>
>    <version>1.0-SNAPSHOT</version>
>
>    <dependencies>
>        <dependency>
>            <groupId>org.apache.camel</groupId>
>            <artifactId>camel-core</artifactId>
>            <version>2.1.0</version>
>        </dependency>
>    </dependencies>
> </project>
>
> On Dec 7, 2009, at 2:18 PM, Claus Ibsen wrote:
>
>> Hi
>>
>> Could you please use more time to report this issue?
>>
>> Create a JIRA ticket and attach a sample with the problem if possible.
>> At least post the stacktrace and you route and remote service
>> interfaces and whatnot, so we have something to use to track the
>> issue.
>>
>>
>> On Mon, Dec 7, 2009 at 7:52 PM, Ming Fang <mi...@mac.com> wrote:
>>> Camel v2.1 no longer allow remote service to return null value.
>>> I'm getting a InvalidPayloadException in CamelInvocationHandler.invoke().
>>>
>>> This is a bug since it is legal to return null values.
>>>
>>
>>
>>> --Ming
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Can't return null with Camel remoting

Posted by Ming Fang <mi...@mac.com>.
Sorry I sent the original message from my iPhone, hoping it was a known issue and a quick workaround.
Below is a small program showing the problem.
Change the camel version in the pom from 2.0.0 to 2.1.0 to see the error.

RCPTest.java

package test;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.bean.ProxyHelper;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.log4j.*;

public class RPCTest {

    public static void main(String[] args) throws Exception {
        Logger.getRootLogger().addAppender(new ConsoleAppender(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN)));

        CamelContext camelContext = new DefaultCamelContext();
        camelContext.addRoutes(new RouteBuilder() {
            public void configure() {
                from("vm:echo").bean(new Echo() {
                    public String echo(String text) {
                        return text;
                    }
                });
            }
        });
        camelContext.start();

        Echo service = ProxyHelper.createProxy(camelContext.getEndpoint("vm:echo"), Echo.class);
        //prints "test"
        System.out.println(service.echo("test"));
        //prints "null" for Camel 2.0 but error for Camel 2.1
        System.out.println(service.echo(null));
    }

    public static interface Echo{
        String echo(String text);
    }
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>jmsproblem</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>
</project>

On Dec 7, 2009, at 2:18 PM, Claus Ibsen wrote:

> Hi
> 
> Could you please use more time to report this issue?
> 
> Create a JIRA ticket and attach a sample with the problem if possible.
> At least post the stacktrace and you route and remote service
> interfaces and whatnot, so we have something to use to track the
> issue.
> 
> 
> On Mon, Dec 7, 2009 at 7:52 PM, Ming Fang <mi...@mac.com> wrote:
>> Camel v2.1 no longer allow remote service to return null value.
>> I'm getting a InvalidPayloadException in CamelInvocationHandler.invoke().
>> 
>> This is a bug since it is legal to return null values.
>> 
> 
> 
>> --Ming
>> 
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus


Re: Can't return null with Camel remoting

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Could you please use more time to report this issue?

Create a JIRA ticket and attach a sample with the problem if possible.
At least post the stacktrace and you route and remote service
interfaces and whatnot, so we have something to use to track the
issue.


On Mon, Dec 7, 2009 at 7:52 PM, Ming Fang <mi...@mac.com> wrote:
> Camel v2.1 no longer allow remote service to return null value.
> I'm getting a InvalidPayloadException in CamelInvocationHandler.invoke().
>
> This is a bug since it is legal to return null values.
>


> --Ming
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus