I have an interface which I am using as Camel Proxy <http://camel.apache.org/using-camelproxy.html> . My route is as below:
from("direct:services") .onException(Exception.class) .process(new Processor() { @Override public void process(Exchange arg0) throws Exception { Exception e = arg0.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class); LOGGER.error(e, e.getMessage()); } }).handled(true).end() .setHeader(Exchange.HTTP_URI, simple("${body.url}")) .setHeader(Exchange.HTTP_METHOD,simple("${body.httpMethod}")) .setHeader(Exchange.CONTENT_TYPE, simple("${body.contentType}")) .setBody(simple("${body.requestBody}")) .choice() .when(simple("${body.proxyRequired} == 'true'")) .inOut("{{http.urlProxy}}") .otherwise() .inOut("{{http.url}}") .end() .setBody(bean(appUtil, "extractResponse")); The interface is : public interface ApiServices { ServiceProviderResponse performOperation(ServiceProviderRequest request); } And the ServiceProviderResponse and ServiceProviderRequest classes : public class ServiceProviderRequest { private String url; private String requestBody; private String httpMethod; private String contentType; private boolean proxyRequired; private Map<String, String> headers; //getters and setters } public class ServiceProviderResponse { private int statusCode; private String body; private String errorMessage; private String contentType; private String url; //getters and setters } This is how this whole thing is working : @Produce(uri = "direct:services") ApiServices appServices; ServiceProviderResponse response = appServices.performOperation(request); Earlier my interface's method was : `ServiceProviderResponse performOperation(String url);` and it worked fine(ofcourse my route was different earlier). So is it something that we cannot use custom object types like this? The exception that I get : Caused by: org.apache.camel.InvalidPayloadException: No body available of type: com.common.util.ServiceProviderResponse but has value: BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]] of type: org.apache.camel.component.bean.BeanInvocation on: Message: BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]]. Caused by: No type converter available to convert from type: org.apache.camel.component.bean.BeanInvocation to the required type: com.common.util.ServiceProviderResponse with value BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]]. Exchange[Message: BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]]]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: org.apache.camel.component.bean.BeanInvocation to the required type: com.common.util.ServiceProviderResponse with value BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]]] at org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:102) at org.apache.camel.component.bean.AbstractCamelInvocationHandler.getBody(AbstractCamelInvocationHandler.java:58) at org.apache.camel.component.bean.AbstractCamelInvocationHandler.afterInvoke(AbstractCamelInvocationHandler.java:148) at org.apache.camel.component.bean.AbstractCamelInvocationHandler$1.call(AbstractCamelInvocationHandler.java:85) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at org.apache.camel.component.bean.AbstractCamelInvocationHandler.invokeWithbody(AbstractCamelInvocationHandler.java:101) at org.apache.camel.component.bean.CamelInvocationHandler.invoke(CamelInvocationHandler.java:44) ... 43 more Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: org.apache.camel.component.bean.BeanInvocation to the required type: com.common.util.ServiceProviderResponse with value BeanInvocation public abstract com.common.util.ServiceProviderResponse com.common.util.ApiServices.performOperation(com.common.util.ServiceProviderRequest) with [com.common.util.ServiceProviderRequest@4ce55b]] at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:147) at org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:100) ... 50 more Exception says something about TypeConverters, do I need to implement a type converter also now ? If yes how to do it? I have already gone through Camel docs for type converter but I dont understand from it much. Also I guess most of you have understood what I want to achieve, so if you guys have any different methods to accomplish this or some suggestions, please post it. -- View this message in context: http://camel.465427.n5.nabble.com/NoTypeConversionAvailableException-When-using-interface-as-Apache-Camel-Proxy-tp5723880.html Sent from the Camel - Users mailing list archive at Nabble.com.