[ 
https://issues.apache.org/jira/browse/CAMEL-20991?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17871561#comment-17871561
 ] 

Claus Ibsen commented on CAMEL-20991:
-------------------------------------

Okay I think its better to make the export a bit more flexible and attempt to 
export also if some property values has not been defined yet, so we can make 
your example export even without the --ignore option. However it would not be 
able to do that in case of compilation error, so the option can be useful 
there, but you risk that the export fail to detect a component in use due to 
the route was not compiled.

> camel-jbang - export error when there is placeholder in a kamelet endpoint 
> url with a bean
> ------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-20991
>                 URL: https://issues.apache.org/jira/browse/CAMEL-20991
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jbang
>            Reporter: Claudio Miranda
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.8.0
>
>
> Trying to export the following route, with {{--ignore-loading-error}}
> {code:java}
> camel export --ignore-loading-error --runtime=quarkus --dir=ceq-app1 
> Http2Jms.java
> {code}
> {code:java}
> import org.apache.camel.builder.RouteBuilder;
> public class Http2Jms extends RouteBuilder {
>   @Override
>   public void configure() throws Exception {
>     rest()
>       .post("/message")
>       .id("rest")
>       .to("direct:jms");
>     from("direct:jms")
>       .log("Sending message to JMS {{broker}}: ${body}")
>       
> .to("kamelet:jms-amqp-10-sink?remoteURI=RAW({{broker}})&destinationName={{queue}}&destinationType=Queue");
>     }
> }
> {code}
> There is an error
> {code:java}
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve 
> endpoint: 
> jms://Queue:%7B%7Bqueue%7D%7D?connectionFactory=%23bean%3AconnectionFactoryBean-1
>  due to: Error binding property 
> (connectionFactory=#bean:connectionFactoryBean-1) with name: 
> connectionFactory on bean: 
> jms://Queue:%7B%7Bqueue%7D%7D?connectionFactory=%23bean%3AconnectionFactoryBean-1
>  with value: #bean:connectionFactoryBean-1
> at 
> org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:835)
> at 
> org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:735)
> at 
> org.apache.camel.support.CamelContextHelper.resolveEndpoint(CamelContextHelper.java:128)
> at org.apache.camel.reifier.SendReifier.resolveEndpoint(SendReifier.java:47)
> at org.apache.camel.reifier.SendReifier.createProcessor(SendReifier.java:37)
> at 
> org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:886)
> at 
> org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:622)
> at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:231)
> ... 34 more
> Caused by: org.apache.camel.PropertyBindingException: Error binding property 
> (connectionFactory=#bean:connectionFactoryBean-1) with name: 
> connectionFactory on bean: 
> jms://Queue:%7B%7Bqueue%7D%7D?connectionFactory=%23bean%3AconnectionFactoryBean-1
>  with value: #bean:connectionFactoryBean-1
> at 
> org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:544)
> at 
> org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420)
> at 
> org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300)
> at 
> org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1958)
> at 
> org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:424)
> at 
> org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:396)
> at 
> org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:422)
> at 
> org.apache.camel.component.seda.SedaComponent.createEndpoint(SedaComponent.java:273)
> at 
> org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:171)
> at 
> org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:801)
> ... 41 more
> Caused by: java.lang.IllegalStateException: Cannot create bean: 
> #class:org.apache.qpid.jms.JmsConnectionFactory
> at 
> org.apache.camel.model.BeanModelHelper.lambda$bind$2(BeanModelHelper.java:293)
> at org.apache.camel.util.function.Suppliers$1.get(Suppliers.java:48)
> at 
> org.apache.camel.support.SupplierRegistry.lookupByNameAndType(SupplierRegistry.java:48)
> at 
> org.apache.camel.support.SimpleRegistry.lookupByName(SimpleRegistry.java:41)
> at 
> org.apache.camel.support.DefaultRegistry.lookupByName(DefaultRegistry.java:222)
> at 
> org.apache.camel.support.CamelContextHelper.lookup(CamelContextHelper.java:195)
> at 
> org.apache.camel.support.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:235)
> at 
> org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1624)
> at 
> org.apache.camel.support.PropertyBindingSupport.resolveValue(PropertyBindingSupport.java:887)
> at 
> org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:530)
> ... 50 more
> Caused by: org.apache.camel.PropertyBindingException: Error binding property 
> (remoteURI=@@[broker]@@) with name: remoteURI on bean: 
> org.apache.qpid.jms.JmsConnectionFactory@797fcf9 with value: @@[broker]@@
> at 
> org.apache.camel.support.PropertyBindingSupport.setPropertiesOnTarget(PropertyBindingSupport.java:218)
> at 
> org.apache.camel.model.BeanModelHelper.lambda$bind$2(BeanModelHelper.java:281)
> ... 59 more
> Caused by: java.lang.IllegalArgumentException: Invalid remote URI: 
> @@[broker]@@
> at 
> org.apache.qpid.jms.JmsConnectionFactory.createURI(JmsConnectionFactory.java:366)
> at 
> org.apache.qpid.jms.JmsConnectionFactory.setRemoteURI(JmsConnectionFactory.java:405)
> at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
> at 
> org.apache.camel.impl.engine.IntrospectionSupport.setProperty(IntrospectionSupport.java:606)
> at 
> org.apache.camel.impl.engine.DefaultBeanIntrospection.setProperty(DefaultBeanIntrospection.java:206)
> at 
> org.apache.camel.support.PropertyBindingSupport.doSetSimplePropertyViaReflection(PropertyBindingSupport.java:919)
> at 
> org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaReflection(PropertyBindingSupport.java:818)
> at 
> org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:568)
> at 
> org.apache.camel.support.PropertyBindingSupport.doBuildPropertyOgnlPath(PropertyBindingSupport.java:420)
> at 
> org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:300)
> at 
> org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:1958)
> at 
> org.apache.camel.support.PropertyBindingSupport.setPropertiesOnTarget(PropertyBindingSupport.java:197)
> ... 60 more
> Caused by: java.net.URISyntaxException: Illegal character in path at index 2: 
> @@[broker]@@
> at java.base/java.net.URI$Parser.fail(URI.java:2995)
> at java.base/java.net.URI$Parser.checkChars(URI.java:3166)
> at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3248)
> at java.base/java.net.URI$Parser.parse(URI.java:3207)
> at java.base/java.net.URI.<init>(URI.java:645)
> at 
> org.apache.qpid.jms.JmsConnectionFactory.createURI(JmsConnectionFactory.java:364)
> {code}
>  
> Somehow the --ignore-loading-error doesn't influence the KameletMain loading 
> the kamelet.
> The workaround is to replace the placeholders in the kamelet endpoint with 
> any value, then export, then add the placeholder back in the route in the 
> exported file in src/main/java.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to