[
https://issues.apache.org/jira/browse/CAMEL-8119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14249651#comment-14249651
]
Christoph Läubrich commented on CAMEL-8119:
-------------------------------------------
Can you explain why this is marked as Won't fix? Valid URIs should IMO not lead
to such an exception. If this is desired at least an invalidargument exception
with a text explaining the cause should be thrown (e.g. "encoded & can't be
used in camel URIs use RAW() statement instead"), it takes me some tiem to
realize the cause of this since other encoded special chars work without any
problem!
> Camel mess up URIs with encoded &
> ---------------------------------
>
> Key: CAMEL-8119
> URL: https://issues.apache.org/jira/browse/CAMEL-8119
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.14.0
> Reporter: Christoph Läubrich
>
> I use the 'recipientList' EIP to create dynmic destination.
> All dynamic options values in the URI are encoded (like
> username="+encodeURIComponent(username)).
> The problem is when the value contains the & sign, camel do some kind of
> double decoding the URI and then fails with an obscure message.
> Example (raw) URI passed to the recipientList
> smtps://smtp.googlemail.com?username=myuser&password=%26%3F%23O7fxo
> (note: this also happen if the url is a static to="...")
> Exception:
> Failed to resolve endpoint:
> smtps://smtp.googlemail.com?%3F%23O7fxo&password=&username=myuser due to:
> There are 1 parameters that couldn't be set on the endpoint. Check the uri if
> the parameters are spelt correctly and that they are properties of the
> endpoint. Unknown parameters=[{#O7fxo}]
> at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:534)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:71)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.util.ExchangeHelper.resolveEndpoint(ExchangeHelper.java:88)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.RecipientListProcessor.resolveEndpoint(RecipientListProcessor.java:223)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.RecipientListProcessor.createProcessorExchangePairs(RecipientListProcessor.java:163)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:208)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.RecipientList.sendToRecipientList(RecipientList.java:167)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.RecipientList.process(RecipientList.java:120)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87)[camel-core-2.13.1.jar:2.13.1]
> at
> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:103)[camel-jms-2.13.1.jar:2.13.1]
> at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:562)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:500)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:468)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1101)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1093)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:990)[spring-jms-3.2.8.RELEASE.jar:3.2.8.RELEASE]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_51]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_51]
> at java.lang.Thread.run(Thread.java:744)[:1.7.0_51]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)