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