Cool.
Thanks for letting me know.

Christian

On Wed, Jun 20, 2012 at 11:00 PM, Hadrian Zbarcea <hzbar...@gmail.com>wrote:

> Yes, it is :).
>
> Hadrian
>
>
>
>
> On 06/20/2012 04:52 PM, Christian Müller wrote:
>
>> Hadrian, do you know whether
>> jetty:http://...
>> is a valid URI?
>>
>> I'm to lazy to go through the entire spec. May you know it?
>>
>> Christian
>>
>> On Wed, Jun 20, 2012 at 10:40 PM, Hadrian Zbarcea<hzbar...@gmail.com>**
>> wrote:
>>
>>  +1. Agree on all counts. All valid points. On the second bullet I think
>>> we
>>> have even better options.
>>> Thanks
>>> Hadrian
>>>
>>>
>>> On 06/20/2012 03:47 PM, Christian Müller wrote:
>>>
>>>  +1 for forcing valid URI from Camel 3.0 on warts if:
>>>>    - we can still support all options (if this is not the case, we have
>>>> to
>>>> discuss the concrete cases)
>>>>    - communicate this API breaking change in the Camel 3.0 release notes
>>>> and provide the escaped char sequence for the most used chars (for
>>>> convenience for our users)
>>>>    - URI's like jetty:http://...are valid (if not, we have to discuss
>>>> this)
>>>>    - no change in Camel 2.x to force valid URI's (I think we all agree
>>>> on
>>>> this)
>>>>
>>>> If an influential number of users prefer to use invalid URI's for
>>>> readability reasons, we could provide a converter utility class for
>>>> their
>>>> convenience (it's not my favor). But the DefaultComponent should assume
>>>> valid URI's.
>>>>
>>>> And I also think validating options is an important, but different topic
>>>> for a different thread...
>>>>
>>>> My 0.02$,
>>>> Christian
>>>>
>>>> On Wed, Jun 20, 2012 at 6:29 PM, Hadrian Zbarcea<hzbar...@gmail.com>
>>>>  wrote:
>>>>
>>>>  Guillaume, you pay a price no matter what, if you do something or if
>>>> you
>>>>
>>>>> don't. I really don't want to talk about a solution, but the
>>>>> DefaultComponent already has a @Deprecated preProcessUri(String uri)
>>>>> intended to convert a current uri like String to an equivalent valid
>>>>> form
>>>>> (and log the new form, so that users can update their code without much
>>>>> pain). The only thing we need to do is to go through each component,
>>>>> define
>>>>> a valid form and implement preProcessUri (hopefully in 2.11.0) and then
>>>>> remove it altogether in 3.0 (and only leave an external tool maybe for
>>>>> those who migrate from old versions straight to 3.0). In your example,
>>>>> it's
>>>>> just a matter of using parenthesis vs curlies and $ sign.
>>>>>
>>>>> And by the way, nothing should be affected in 2.x, tests should
>>>>> continue
>>>>> to work without changes, current syntax will be supported along a new,
>>>>> valid syntax (and preProcessUri would provide the conversion
>>>>> internally).
>>>>>
>>>>> There are solutions. Is there willingness? Lazy consensus doesn't seem
>>>>> to
>>>>> cut it, because discussions are avoided and then we come back to the
>>>>> same
>>>>> thing over and over again. Now we have a vote, so hopefully we'll put
>>>>> this
>>>>> issue to rest soon.
>>>>>
>>>>> Cheers,
>>>>> Hadrian
>>>>>
>>>>>
>>>>> On 06/20/2012 11:31 AM, Guillaume Nodet wrote:
>>>>>
>>>>>  Wouldn't it affect basic things such as the file component which uses
>>>>>
>>>>>> endpoints such as
>>>>>>    file://inbox?expression=******backup/${date:now:yyyyMMdd}/${****
>>>>>>
>>>>>> **file:name}
>>>>>>
>>>>>> and also the properties component and all camel placeholders such as
>>>>>>   properties:{{cool.end}}
>>>>>>
>>>>>> I don't really think the change is worth it if those kind of things
>>>>>> are affected.
>>>>>>
>>>>>> On Wed, Jun 20, 2012 at 4:02 PM, Hadrian Zbarcea<hzbar...@gmail.com>
>>>>>>  wrote:
>>>>>>
>>>>>>  As I mentioned before, to me this is a no-brainer. We all advertised
>>>>>>
>>>>>>> for
>>>>>>> almost 5 years that Camel uses URIs. That is not true, it doesn't
>>>>>>> really.
>>>>>>>
>>>>>>> Next there is the problem of parsing. In Camel it is ambiguous how a
>>>>>>> configuration string (a la URI) looks like. You could say it's ok if
>>>>>>> the
>>>>>>> parsing were done by a component, but it's not, it's done in the
>>>>>>> core,
>>>>>>> it's
>>>>>>> error prone and issues creep in all the time. A couple of more recent
>>>>>>> ones
>>>>>>> related to the use of '%' were the trigger for this discuss. There
>>>>>>> is a
>>>>>>> log
>>>>>>> of unnecessary code (and buggy too) we could get rid of and make
>>>>>>> things
>>>>>>> more
>>>>>>> predictable.
>>>>>>>
>>>>>>> I understand the readability argument. I think however that if a
>>>>>>> component
>>>>>>> designer payed attention to the spec when defining the URI, we
>>>>>>> wouldn't
>>>>>>> be
>>>>>>> in this mess and URIs could be readable too. In parenthesis (pun
>>>>>>> intended),
>>>>>>> parenthesis are unreserved chars (and hence safe to use), while
>>>>>>> square
>>>>>>> and
>>>>>>> curly brackets are not. My suggestion: read the spec.
>>>>>>>
>>>>>>> For edge cases encoding may be necessary, but that's known and
>>>>>>> expected
>>>>>>> for
>>>>>>> any other technology out there, most notably REST that uses URLs left
>>>>>>> and
>>>>>>> right. I don't see users being frustrated with Camel doing what's
>>>>>>> pretty
>>>>>>> much expected and unambiguous.
>>>>>>>
>>>>>>> Then there is the issue of tools and other libs using URIs. It is
>>>>>>> impossible
>>>>>>> to generate a URI consumed by camel, because by using URIs, the
>>>>>>> String
>>>>>>> form
>>>>>>> is encoded. That totally throws Camel (that encodes once more) off.
>>>>>>>
>>>>>>> Now validation. Yes, it's not completely separate. I meant it's
>>>>>>> separate
>>>>>>> for
>>>>>>> the purpose of this discussion. Actually validating URIs is much
>>>>>>> easier
>>>>>>> than
>>>>>>> validating Strings with an unknown syntax.
>>>>>>>
>>>>>>> Hadrian
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 06/20/2012 08:43 AM, Guillaume Nodet wrote:
>>>>>>>
>>>>>>>
>>>>>>>  Well, I'm not sure why you consider that separate.  I don't see the
>>>>>>>> point in forcing the user to use encoded characters which lessen the
>>>>>>>> readability if the uri is not correct at the end.
>>>>>>>> Also what's the drawback in encoding the uri ? At the end, the uri
>>>>>>>> encoding is correct, but it gives the user more ease of use.
>>>>>>>> Can you point to such drawbacks or problems using such uris ? (sorry
>>>>>>>> if I missed some previous discussions).
>>>>>>>>
>>>>>>>> On Wed, Jun 20, 2012 at 2:27 PM, Hadrian Zbarcea<hzbar...@gmail.com
>>>>>>>> >
>>>>>>>>  wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>  Proper uri syntax and validation are 2 separate issues. This
>>>>>>>>> discussion
>>>>>>>>> is
>>>>>>>>> about the syntax. Since it's just syntax (proper encoding) I don't
>>>>>>>>> see
>>>>>>>>> any
>>>>>>>>> risk of loosing features and I agree we shouldn't.
>>>>>>>>>
>>>>>>>>> Hadrian
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 06/20/2012 03:02 AM, Guillaume Nodet wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Do you have any particular example ?
>>>>>>>>>> I know for example activemq uses uri in an extended way with
>>>>>>>>>> parenthesis and commas and I'm not sure they are completely valid.
>>>>>>>>>> If getting back to real uris means loosing some features, that
>>>>>>>>>> needs
>>>>>>>>>> to be made clear.
>>>>>>>>>>
>>>>>>>>>> On Mon, Jun 11, 2012 at 4:32 PM, Hadrian Zbarcea<
>>>>>>>>>> hzbar...@gmail.com
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>   wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> This is not a new topic, but it looks like it's coming back in
>>>>>>>>>>> different
>>>>>>>>>>> threads. Since this is is the underlying issue, I'd suggest
>>>>>>>>>>> clarifying
>>>>>>>>>>> this
>>>>>>>>>>> first.
>>>>>>>>>>>
>>>>>>>>>>> At the core of the issue is a call to
>>>>>>>>>>> UnsafeUriCharactersEncoder.******encode(uri)
>>>>>>>>>>> in DefaultComponent.******createEndpoint(String), that made
>>>>>>>>>>> camel
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> silently
>>>>>>>>>>> accept
>>>>>>>>>>> invalid URIs and then opened the gates to component writers using
>>>>>>>>>>> URIs
>>>>>>>>>>> that
>>>>>>>>>>> are not URIs. This behavior was there from the very beginning of
>>>>>>>>>>> Camel.
>>>>>>>>>>> (I
>>>>>>>>>>> refactored that code to introduce a deprecated from start
>>>>>>>>>>> preProcessUri
>>>>>>>>>>> that
>>>>>>>>>>> provided a path for cleaning up before camel-3.0, but that's a
>>>>>>>>>>> separate
>>>>>>>>>>> topic).
>>>>>>>>>>>
>>>>>>>>>>> To me, personally, using valid URIs for endpoints is a
>>>>>>>>>>> no-brainer,
>>>>>>>>>>> but
>>>>>>>>>>> I
>>>>>>>>>>> sense that there is disagreement on that.
>>>>>>>>>>>
>>>>>>>>>>> Thoughts?
>>>>>>>>>>> Hadrian
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>

Reply via email to