Hello-
I'm new to Camel and excited about it's use.  However, I find myself very 
frustrated with what seems to be the simplest of things.  I have several 
questions, but will try and keep them in separate posts.

I am using Eclipse, Camel 2.24.0, Spring Boot 2.2.0, Java 1.8, and I can not 
use any xml.

I would like to dynamically build my URIs based on properties from an 
application.properties file that is on the classpath, as well as use exchange 
header parameters.
I thought I could use toD() to create dynamic URIs?  This seems to be blank.  
What am I doing wrong?  Also, please note that I tried to print my 
application.properties value for the key "data.trans.vm", and I get nothing.

My goal is to be able to use the applications.properties file as well as header 
parameters.  Thanks in advance for your help.


My ~/src/main/resources/applications.properties file:
data.trans.greeting=Hello Viki

@Component
public class DataTransRouteBuilder extends RouteBuilder {
@Override
               public void configure() throws Exception {

from("jetty:http://localhost:8081/foobar";).tracing()
                              .log("data mart id is: ${header.dataMartId}")
                              .to("direct:getDataMart");


               from("direct:getDataMart").tracing()
                   .log("at direct:getDataMart")
                   .log("properties: DATA_TRANS_VM is 
properties:{{data.trans.greeting}}")
                   .setBody().constant(null)
                   .setHeader(Exchange.HTTP_METHOD, simple("GET"))
                   .setHeader("Content-Type", constant("application/json"))
                   .setHeader("Accept", constant("application/json"))
                   .setHeader("Accept-Encoding", constant("identity"))
                   .setHeader("Authorization", constant(BASIC_AUTH))
                   .log("call data mart url for id=${header.dataMartId}")
                   .toD("http://<MY REMOTE REST 
SERIVE>:<PORT>/${header.dataMartId}/build?bridgeEndpoint=true")
                   .choice()
                                  
.when().simple("${header.CamelHttpResponseCode} != 200")
               .log("Failure to call: " + DATA_TRANS_DATAMART_URL)
               .to("direct:ERROR")
         .end()

                   .unmarshal().json(JsonLibrary.Jackson, JobInfo.class)
                   .bean(dataTransJobInfoProcessor, "process")
...
>From my console:
...
2019-08-03 23:39:32.195  INFO 7612 --- [           main] 
o.a.camel.spring.SpringCamelContext      : Apache Camel 2.24.0 (CamelContext: 
camel-1) started in 0.918 seconds
2019-08-03 23:39:32.254  INFO 7612 --- [           main] 
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 
(http) with context path ''
2019-08-03 23:39:32.258  INFO 7612 --- [           main] 
a.r.l.a.ReckonLineageAdaptersApplication : Started 
ReckonLineageAdaptersApplication in 16.714 seconds (JVM running for 17.413)
2019-08-03 23:39:41.859  INFO 7612 --- [tp1955991197-25] route1                 
                  : data mart id is: 12345
2019-08-03 23:39:41.860  INFO 7612 --- [tp1955991197-25] route2                 
                  : at direct:getDataMart
2019-08-03 23:39:41.860  INFO 7612 --- [tp1955991197-25] route2                 
                  : properties: DATA_TRANS_VM is properties:{{data.trans.vm}}
2019-08-03 23:39:41.861  INFO 7612 --- [tp1955991197-25] route2                 
                  : call data mart url for id=12345
2019-08-03 23:39:42.197 ERROR 7612 --- [tp1955991197-25] 
o.a.camel.processor.DefaultErrorHandler  : Failed delivery for (MessageId: 
ID-vkeat01116-1564893569848-0-3 on ExchangeId: 
ID-vkeat01116-1564893569848-0-1). Exhausted after delivery attempt: 1 caught: 
com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map 
due to end-of-input
at [Source: 
(org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream); 
line: 1, column: 0]
...

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                             
                                           Elapsed (ms)
[route1            ] [route1            ] [jetty:http://localhost:8081/foobar   
                                         ] [       338]
[route1            ] [log1              ] [log                                  
                                         ] [         2]
[route1            ] [to1               ] [direct:getDataMart                   
                                         ] [         0]
[route2            ] [log2              ] [log                                  
                                         ] [         0]
[route2            ] [log3              ] [log                                  
                                         ] [         0]
[route2            ] [setBody1          ] [setBody[{null}]                      
                                         ] [         0]
[route2            ] [setHeader1        ] [setHeader[CamelHttpMethod]           
                                         ] [         1]
[route2            ] [setHeader2        ] [setHeader[Content-Type]              
                                         ] [         0]
[route2            ] [setHeader3        ] [setHeader[Accept]                    
                                         ] [         0]
[route2            ] [setHeader4        ] [setHeader[Accept-Encoding]           
                                         ] [         0]
[route2            ] [setHeader5        ] [setHeader[Authorization]             
                                         ] [         0]
[route2            ] [log4              ] [log                                  
                                         ] [         0]
[route2            ] [toD1              ] [                                     
                                         ] [       309]
[route2            ] [choice1           ] 
[when[simple{${header.CamelHttpResponseCode} != 200}]choice[]                  
] [         8]
[route2            ] [unmarshal1        ] 
[unmarshal[org.apache.camel.model.dataformat.JsonDataFormat@f6e1ef6]           
] [        13]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------

com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map 
due to end-of-input
at [Source: 
(org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream); 
line: 1, column: 0]
               at 
com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
 ~[jackson-databind-2.9.9.jar:2.9.9]
               at 
com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4145)
 ~[jackson-databind-2.9.9.jar:2.9.9]
               at 
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4000)
 ~[jackson-databind-2.9.9.jar:2.9.9]
               at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3070) 
~[jackson-databind-2.9.9.jar:2.9.9]
               at 
org.apache.camel.component.jackson.JacksonDataFormat.unmarshal(JacksonDataFormat.java:194)
 ~[camel-jackson-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:69)
 ~[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:138) 
[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:101) 
[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:76)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) 
[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:138) 
[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.Pipeline.process(Pipeline.java:101) 
[camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
 [camel-core-2.24.0.jar:2.24.0]
               at 
org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:220)
 [camel-jetty-common-2.24.0.jar:2.24.0]
               at 
org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:79) 
[camel-http-common-2.24.0.jar:2.24.0]
               at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 
[tomcat-embed-core-9.0.21.jar:9.0.21]
               at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876) 
[jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
 [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:150) 
[jetty-servlets-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43)
 [camel-jetty-common-2.24.0.jar:2.24.0]
               at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
 [jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) 
[jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
 [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
 [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
 [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) 
[jetty-servlet-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
 [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
 [jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) 
[jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) 
[jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at org.eclipse.jetty.server.Server.handle(Server.java:505) 
[jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) 
[jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) 
[jetty-server-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
 [jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 
[jetty-io-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
 [jetty-util-9.4.19.v20190610.jar:9.4.19.v20190610]
               at 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
 [jetty-util-9.4.19.v20190610.jar:9.4.19.v20190610]
               at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]


***************************************************************************
The information contained in this communication is confidential, is
intended only for the use of the recipient named above, and may be legally
privileged.

If the reader of this message is not the intended recipient, you are
hereby notified that any dissemination, distribution or copying of this
communication is strictly prohibited.

If you have received this communication in error, please resend this
communication to the sender and delete the original message or any copy
of it from your computer system.

Thank You.
****************************************************************************

Reply via email to