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

Claus Ibsen commented on CAMEL-4857:
------------------------------------

CAMEL-4256 is the real cause. It is too restrictive in terms of URI 
flexibility. We need to open up this so the component writers have the power 
back again, and can totally decide how to handle uri's in their components.
                
> Endpoint URI normalization: information in path is lost
> -------------------------------------------------------
>
>                 Key: CAMEL-4857
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4857
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.0
>            Reporter: Alexander Azarov
>
> A project with a test case is here: https://github.com/alaz/camel290_uri
> The test case with the problem description (the problem occured during 
> migration of camel-beanstalk https://github.com/osinka/camel-beanstalk 
> component onto 2.9.0):
> {code:title=UriTest.java}
> package camel290.uri;
> import java.util.Map;
> import org.apache.camel.Consumer;
> import org.apache.camel.Endpoint;
> import org.apache.camel.Processor;
> import org.apache.camel.Producer;
> import org.apache.camel.impl.DefaultComponent;
> import org.apache.camel.impl.DefaultEndpoint;
> import org.apache.camel.test.CamelTestSupport;
> import org.junit.Before;
> import org.junit.Test;
> import static org.junit.Assert.*;
> public class UriTest extends CamelTestSupport {
>   /**
>    * An URI of Camel Beanstalk component consists of a hostname, port and a 
> list
>    * of tube names. Tube names are separated by "+" character (which is more 
> or less
>    * usualy used on the Web to make lists), but every tube name may contain 
> URI special
>    * characters like ? or +
>    */
>   class MyEndpoint extends DefaultEndpoint {
>     String uri = null;
>     String remaining = null;
>     public MyEndpoint(final String uri, final String remaining) {
>       this.uri = uri;
>       this.remaining = remaining;
>     }
>     public Producer createProducer() throws Exception {
>       throw new UnsupportedOperationException("Not supported yet.");
>     }
>     public Consumer createConsumer(Processor prcsr) throws Exception {
>       throw new UnsupportedOperationException("Not supported yet.");
>     }
>     public boolean isSingleton() {
>       return true;
>     }
>   }
>   class MyComponent extends DefaultComponent {
>     @Override
>     protected Endpoint createEndpoint(final String uri, final String 
> remaining, final Map<String, Object> parameters) throws Exception {
>       return new MyEndpoint(uri, remaining);
>     }
>   }
>   @Before
>   @Override
>   public void setUp() throws Exception {
>     super.setUp();
>     context.addComponent("my", new MyComponent());
>   }
>   @Test
>   public void testExclamationInUri() {
>     /**
>      * %3F is not an ?, it's part of tube name.
>      */
>     MyEndpoint endpoint = 
> context.getEndpoint("my:host:11303/tube1+tube%2B+tube%3F", MyEndpoint.class);
>     assertNotNull("endpoint", endpoint);
>   }
>   @Test
>   public void testPath() {
>     /**
>      * Here a tube name is "tube+" and written in URI as "tube%2B", but it 
> gets
>      * normalized, so that an endpoint sees "tube1+tube+"
>      */
>     MyEndpoint endpoint = context.getEndpoint("my:host:11303/tube1+tube%2B", 
> MyEndpoint.class);
>     assertEquals("Path contains several tube names, every tube name may have 
> + or ? characters", "host:11303/tube1+tube%2B", endpoint.remaining);
>   }
> }
> {code} 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to