Re: Issue 1: Adding additional conneg metadata to _at_Produce/ConsumeXXX

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Tue, 22 May 2007 15:07:26 +0200

Marc Hadley wrote:
> On May 21, 2007, at 11:09 AM, Paul Sandoz wrote:
>> Marc Hadley wrote:
>>> On May 19, 2007, at 10:32 AM, Jerome Louvel wrote:
>>>>> I'm therefore not yet convinced that adding a declarative language
>>>>> capability is that useful in practice. I think the above does
>>>>> illustrate a need for a "QValuedCommaSeparatedList" type to aid in
>>>>> parsing of the Accept-XXX headers though.
>>>> Like you, I'm not sure yet about the practicality of declaring those
>>>> metadata as annotations. However, I think that we should protect the
>>>> resource code from client preferences considerations like
>>>> parsing/analyzing
>>>> the Accept* headers!
>>> I think we can certainly help with the parsing as I suggested.
>> Another way of thinking about this is to have isAcceptable and
>> isNotAcceptable methods on say an 'AcceptableEvaluator' interface.
> Interesting idea. Perhaps we could generalize the existing
> ProconditionEvaluator interface:
> Additional methods could be added to enable an application to
> dynamically check if the available languages, encodings and charsets
> meet the clients preferences or not.

That would work.

Thinking some more... for these cases it is possible to expose the
actually header values using HeaderParam with a List or Set that is
ordered according to the q parameter, since the runtime knows the
meaning of such headers.

But i prefer method calling as i think it is more meaningful and concise
in terms of the process (especially when multiple things might be
acceptable for a response):

if (x.isAcceptable(..., ..., ...)) {
} else if x.isAcceptable(...)) {
} else { return Response.Builder.notAcceptable().build(); } *


[*] Tis a small thing but for the returning of stuff we could also allow
the return of:

   return Response.Builder.notAcceptable();

and the runtime could call the build() method.

| ? + ? = To question
    Paul Sandoz