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)

Reply via email to