UrlEncodedQueryString CCC request

Paul Sandoz Paul.Sandoz at Sun.COM
Fri Oct 12 09:25:39 PDT 2007


Paul Sandoz wrote:
> Hi Richard, Michael,
> 
> Some clarifications on UriBuilder, URI templates and URI processing in 
> JSR-311.
> 
> UriBuilder is primarily concerned about making easy to safely and 
> efficiently build URIs. It was designed to be general in nature rather 
> than scoped to a certain way in JSR-311.

What i said above is slightly misleading of me, i should have said it 
was *mostly* designed to be general in nature as there are 4 methods 
associated with accessing URI templates of a class or method, but it is 
simple to generalize by removing such methods.

Paul.

> If it is at all specific it is 
> focused on the use-cases for building and using URIs for RESTful Web 
> applications. For example, given an instance of a java.net.URI how can 
> one easily and safely append one or more path segments to the path 
> component of that instance, or add query parameters and values to the 
> query component of that instance, to create a new URI?
> 
> A UriBuilder can be created from an existing java.net.URI instance and 
> then the URI components can be replaced and/or augmented (but not 
> retrieved). URI templates are just one aspect of building URIs and a 
> UriBuilder can be used effectively without leveraging templates (many of 
> the examples provided in the Jersey, the RI, distribution do just that).
> 
> URI templates are specified in an internet draft [1], i don't know 
> when/if it will become an RFC. I would not go as far to say they are "ad 
> hoc", which my understanding implies a particular case, as URI templates 
> are fairly general and useful so i would not discount them too early in 
> the discussion process.
> 
> JSR-311 also provides access to the query parameters, path segments, and 
> matrix parameters of path segments present in a URI [2].
> 
> I understood the CCC request to consider alignment as something larger 
> in scope to improve both URI building and URI parsing/building of URI 
> components.
> 
> JSR-311 will have to provide it's own URI-based classes but it would be 
> good if we could align and improve the design in JSR-311 and JDK7.
> 
> Paul.
> 
> [1] http://www.ietf.org/internet-drafts/draft-gregorio-uritemplate-01.txt
> [2] https://jsr311.dev.java.net/nonav/javadoc/javax/ws/rs/core/UriInfo.html
> 
> Richard Kennard wrote:
>> Michael (Paul? Marc?),
>>
>> Looking at the JSR311 URIBuilder, and with respect to Mark 
>> (Reinhold)'s concerns, I actually don't think there is much of an 
>> overlap between them. Specifically:
>>
>> 1) javax.ws.rs.core.UriBuilder seems primarily concerned with building 
>> URIs by leveraging UriTemplates
>> 2) java.net.UrlEncodedQueryString seems primarily concerned with 
>> modelling a query string
>>
>> While 1) is useful for building URIs in a JSR311-specific way, 2) is 
>> useful for parsing and retrieving and modifying query parameters (eg. 
>> not solely a builder)
>>
>> So while an implementation of JSR311 may want to use 
>> java.net.UrlEncodedQueryString internally, I don't see how the two 
>> classes could effectively merge, because UriBuilder isn't concerned 
>> with parsing and retrieving and modifying, and UrlEncodedQueryString 
>> isn't concerned with UriTemplates.
>>
>> Regards,
>>
>> Richard.
>>
>> Michael McMahon wrote:
>>> We have been asked by the CCC to go back and reconsider the design of 
>>> the proposed
>>> UrlEncodedQueryString class/API and to consider aligning it with the 
>>> URIBuilder class
>>> that has been proposed in JSR311. Also, the particular concern 
>>> expressed by the CCC
>>> is that we possibly restricted the scope of the class too much.
>>>
>>> What I think we would like to achieve (for Java SE) is a general 
>>> purpose URI builder that is not
>>> specifically tied to any particular type of web application.
>>>
>>> When Richard initially proposed the UrlEncodedQueryString, it was 
>>> more like a URIBuilder
>>> but our concern (which I think is still valid) is that a Java SE 
>>> class for constructing URIs
>>> must be solely based on defined standards (the URI rfcs), rather than 
>>> on ad-hoc (albeit commonly used)
>>> conventions in the world of web applications. Specifically, I don't 
>>> think we can impose
>>> any additional structure on URIs that is not explicitly specified in 
>>> the relevant URIs.
>>> But if other people have a different view on this, I'm interested to 
>>> discuss it.
>>>
>>> A reference for the JSR311 class is at
>>> https://jsr311.dev.java.net/nonav/javadoc/index.html
>>>
>>> and Paul Sandoz's blog entry talking about it is at
>>> http://blogs.sun.com/sandoz/entry/building_uris
>>>
>>> The javadoc for the proposed UrlEncodedQueryString is attached in a 
>>> zip file
>>>
>>> Thanks,
>>> Michael.
>>
>>
> 

-- 
| ? + ? = To question
----------------\
    Paul Sandoz
         x38109
+33-4-76188109



More information about the net-dev mailing list