Thanks, Claus! Now the following works for posting an object to the test uri 
http://localhost:8082/to/candidate/applyx.
But is this the correct way?
@Component
public class RestRoute extends RouteBuilder {

  @Override
  public void configure() 
  throws Exception 
  {

    HttpComponent http = getContext().getComponent("http4", 
HttpComponent.class);
    http.setAllowJavaSerializedObject(true);

    restConfiguration()
      .component("servlet")
      .producerComponent("http4")
      .host("localhost")
      .port(8082);

    Candidate c = new Candidate();
    c.setFirstName("Joe");
    c.setLastName("Blow");
   
    from("timer://foo?repeatCount=1&delay=5s")
      .process(new Processor() {
         @Override
         public void process(Exchange exchange) throws Exception {
           exchange.getIn().setBody(c);
         }})
      .marshal().json(JsonLibrary.Jackson)
      .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
      .to("rest:post:to/candidate/applyx")
      .log("body = ${body}");
   }

}


On Thursday, June 14, 2018 5:40 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:



Hi

For binding to POJO classes you need to add camel-jackson to the
classpath, and have either JAXB or Jackson annotations on the class as
well.


On Wed, Jun 13, 2018 at 7:34 PM, Roman Vottner <r...@gmx.at> wrote:
> Can you try to define
>
>    .bindingMode(RestBindingMode.json)
>
> to your restConfiguration or post() definition? According to the docs 
> (http://camel.apache.org/rest-dsl.html) it should enable conversion to/from 
> JSON to POJO which according your your posted logs seem to fail.
>
> HTH,
> roman
>
>
>> Am 13.06.2018 um 15:10 schrieb Steve Hiller <sh...@bellsouth.net>:
>>
>> No responses -- Am I doing this completely wrong?
>>
>>    On Friday, June 8, 2018 6:07 PM, Steve Hiller <sh...@bellsouth.net> wrote:
>>
>>
>> Hi All,
>>
>> I recently watched Claus' talk called "Developing cloud-ready Camel 
>> microservices". I am trying to do the following:
>>
>> rest("/candidate")
>>   .post("applyx")
>>   .consumes(MediaType.APPLICATION_JSON_VALUE)
>>   .type(Candidate.class)
>>   .to("direct:passwordlessApply")
>> ;
>>
>>
>> from("direct:passwordlessApply")
>>   .setExchangePattern(ExchangePattern.InOnly)
>>   .to("http4:{{service:candidate-service}}/api/candidate/applyx")
>> ;
>>
>>
>> where {{service:candidate-service}} also consumes the Candidate class.
>>
>> However, I am seeing the following exception:
>>
>> org.apache.camel.InvalidPayloadException: No body available of type: 
>> java.io.InputStream but has value: 
>> com.rusa.adapter.mobile.candidate.domain.Candidate@58af86ed...
>> Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type 
>> converter available to convert from type: 
>> com.rusa.adapter.mobile.candidate.domain.Candidate to the required type: 
>> java.io.InputStream with value 
>> com.rusa.adapter.mobile.candidate.domain.Candidate@58af86ed...
>> Caused by: org.apache.camel.NoTypeConversionAvailableException: No type 
>> converter available to convert from type: 
>> com.rusa.adapter.mobile.candidate.domain.Candidate to the required type: 
>> java.io.InputStream with value 
>> com.rusa.adapter.mobile.candidate.domain.Candidate@58af86ed
>>
>> Any help is most appreciated.
>>
>> Thanks,
>>
>> Steve
>>
>>
>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to