You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Ritwick <ri...@gmail.com> on 2014/06/30 23:33:46 UTC

Issue with Camel

Hi, 
I am new to Camel and am facing an issue with a route I need to setup. It
will be great if someone can either guide me to the correct forum or better
still rectify the issue I am facing. 
Here is what I need to do - expose a restlet endpoint to accept data; use
this data as input to an external SOAP web service and send back the
response in JSON format back to the caller... 
Here is what I have done...however, I am getting the following error while
Camel tries to call the Web Service...can anyone guide me here? Thanks. 

2014-06-30 14:09:24,987 [tlet-1846031557] WARN  PhaseInterceptorChain         
- Interceptor for
{http://www.webserviceX.NET/}CurrencyConvertor#{http://www.webserviceX.NET/}ConversionRate
has thrown exception, unwinding now 
java.lang.ClassCastException: ClassCastException invoking
http://www.webservicex.net/CurrencyConvertor.asmx:
org.restlet.data.Parameter cannot be cast to java.lang.String 


public class IntegrationTest extends CamelTestSupport { 

    @org.junit.Test 
    public void integTest() throws Exception { 
    //trying to simulate the rest service call... 
 
template.sendBodyAndHeader("restlet:http://localhost:8080/convert/{data}?restletMethods=get",
"Body does not matter here", "data",
"{\"FromCurrency\":\"AUD\",\"ToCurrency\":\"USD\"}"); 
        
    } 


    @Override 
    protected RouteBuilder createRouteBuilder() throws Exception { 
        return new RouteBuilder() { 
            @Override 
            public void configure() throws Exception { 
            System.out.println("In Counfigure"); 

        String cxfEndpoint =
"cxf://http://www.webservicex.net/CurrencyConvertor.asmx?" 
        + "wsdlURL=http://www.webservicex.net/CurrencyConvertor.asmx?wsdl&" 
        + "serviceName={http://www.webserviceX.NET/}CurrencyConvertor&" 
        + "portName={http://www.webserviceX.NET/}CurrencyConvertorSoap&" 
        + "dataFormat=MESSAGE"; 
        
        XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat(); 
        SoapJaxbDataFormat soap = new SoapJaxbDataFormat("net.webservicex",
new ServiceInterfaceStrategy(CurrencyConvertorSoap.class, true)); 

         GsonDataFormat gson = new GsonDataFormat(ConversionRate.class); 
         gson.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE); 
                                
from("restlet:http://localhost:8080/convert/{data}?restletMethods=get").routeId("Restlet") 
                                .process(new Processor() { 
                                        @Override 
                                        public void process(Exchange
exchange) throws Exception { 
                                                String data = (String)
URLDecoder.decode((String) exchange.getIn().getHeader("data"), "UTF-8"); 
                                                System.out.println(data); 
                                                // get the mail body as a
String 
                                               
exchange.getIn().setBody(data); 
                                               
Response.getCurrent().setStatus(Status.SUCCESS_OK); 
                                } 
                                        
                                }) 
                .unmarshal(gson) 
                .marshal(soap) 
                .log("${body}") 
                .to(cxfEndpoint) 
                .unmarshal(soap) 
                .marshal(xmlJsonFormat); 
                .log("${body}"); 
            } 
        }; 
    } 
} 



--
View this message in context: http://camel.465427.n5.nabble.com/Issue-with-Camel-tp5753081.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Issue with Camel

Posted by Ritwick <ri...@gmail.com>.
I was able to get this (Restlet -> CXF SOAP web service call) to work. Just
had to make sure that the following line was
there...exchange.getIn().setHeader("org.restlet.http.headers", "");The
restlet headers was actually causing the route to fail with the
ClassCastException - unable to convert from org.restlet.http.Parameter to
java.lang.String.In order to figure out the issue I had to configure the CXF
endpoint with "loggingFeatureEnabled=true". In the additional log that CXF
then provided me, I found that the only place where the request to the CXF
endpoint looked restlet-ish was in the header...once I removed that, it
worked like a charm...



--
View this message in context: http://camel.465427.n5.nabble.com/Issue-with-Camel-tp5753081p5753473.html
Sent from the Camel - Users mailing list archive at Nabble.com.