Claudio Miranda created CAMEL-20991:
---------------------------------------
Summary: 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
Reporter: Claudio Miranda
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)