Raymond created CAMEL-22587:
-------------------------------
Summary: Cannot set headerFilterStrategy option in a Kamelet
Key: CAMEL-22587
URL: https://issues.apache.org/jira/browse/CAMEL-22587
Project: Camel
Issue Type: Bug
Components: camel-mail
Affects Versions: 4.15.0
Reporter: Raymond
The mail component:
[https://camel.apache.org/components/4.14.x/mail-component.html]
has the option
*headerFilterStrategy*
I'm trying to use this option from a Kamelet like this:
{code:java}
template:
beans:
- name: ExtendedHeaderFilterStrategy
type: "#class:org.assimbly.util.mail.ExtendedHeaderFilterStrategy"
route:
from:
uri: "kamelet:source"
steps:
- toD:
uri:
"smtp://smpt.google.com?headerFilterStrategy=#bean:ExtendedHeaderFilterStrategy"
- to:
uri: "kamelet:sink" {code}
or like this:
{code:java}
registry.bind("ExtendedHeaderFilterStrategy", new
ExtendedHeaderFilterStrategy()); {code}
{code:java}
template:
route:
from:
uri: "kamelet:source"
steps:
- toD:
uri:
"smtp://smpt.google.com?headerFilterStrategy=#ExtendedHeaderFilterStrategy"
- to:
uri: "kamelet:sink" {code}
However, I get the following error:
{code:java}
org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint:
smtp://smtp-relay.gmail.com:[email protected])&username=xxxxxx due to: Error
binding property (headerFilterStrategy=%23bean%3AExtendedHeaderFilterStrategy)
with name: headerFilterStrategy on bean:
smtp://smtp-relay.gmail.com:[email protected])&username=xxxxxx with value:
%23bean%3AExtendedHeaderFilterStrategy
at
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:866)
at
org.apache.camel.impl.engine.DefaultCamelContextExtension.getEndpoint(DefaultCamelContextExtension.java:268)
at
org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:106)
at
org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:134)
at
org.apache.camel.support.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:114)
at
org.apache.camel.processor.SendDynamicProcessor.resolveEndpoint(SendDynamicProcessor.java:314)
at
org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:161)
at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:777)
at
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:720)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
at
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:162)
at
org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:370)
at
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:346)
at
org.apache.camel.component.jetty.CamelContinuationServlet.handleDoService(CamelContinuationServlet.java:242)
at
org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:68)
at
org.apache.camel.http.common.CamelServlet.handleService(CamelServlet.java:111)
at
org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:97)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at
org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:751)
at
org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1622)
at
org.apache.camel.component.jetty.MultiPartFilter.doFilter(MultiPartFilter.java:50)
at
org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:49)
at
org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
at
org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
at
org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1555)
at
org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:823)
at
org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:440)
at
org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:470)
at
org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1071)
at org.eclipse.jetty.server.Server.handle(Server.java:182)
at
org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:677)
at
org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:416)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at
org.eclipse.jetty.io.ssl.SslConnection$SslEndPoint.onFillable(SslConnection.java:612)
at
org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:413)
at
org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:155)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at
org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:480)
at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:443)
at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
at
org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:195)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:981)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1211)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1166)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.apache.camel.PropertyBindingException: Error binding property
(headerFilterStrategy=%23bean%3AExtendedHeaderFilterStrategy) with name:
headerFilterStrategy on bean:
smtp://smtp-relay.gmail.com:[email protected])&username=xxxxxx with value:
%23bean%3AExtendedHeaderFilterStrategy
at
org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:808)
at
org.apache.camel.support.PropertyBindingSupport.doSetPropertyValue(PropertyBindingSupport.java:563)
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:423)
at
org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:395)
at
org.apache.camel.support.ScheduledPollEndpoint.configureProperties(ScheduledPollEndpoint.java:115)
at
org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:421)
at
org.assimbly.mail.component.mail.MailComponent.createEndpoint(MailComponent.java:113)
at
org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:171)
at
org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:832)
... 50 common frames omitted
Caused by: org.apache.camel.RuntimeCamelException:
org.apache.camel.NoTypeConversionAvailableException: No type converter
available to convert from type: java.lang.String to the required type:
org.apache.camel.spi.HeaderFilterStrategy
at
org.apache.camel.RuntimeCamelException.wrapRuntimeCamelException(RuntimeCamelException.java:53)
at
org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:104)
at
org.assimbly.mail.component.mail.MailEndpointConfigurer.configure(MailEndpointConfigurer.java:76)
at
org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:806)
... 61 common frames omitted
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type
converter available to convert from type: java.lang.String to the required
type: org.apache.camel.spi.HeaderFilterStrategy
at
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:207)
at
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:188)
at
org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:102)
... 63 common frames omitted {code}
For now, I worked around it by setting it as component option:
{code:java}
MailComponent mailComponent = context.getComponent("smtp", MailComponent.class);
mailComponent.setHeaderFilterStrategy(new ExtendedHeaderFilterStrategy());
{code}
But thought it was good to report anyway.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)