Hi,

Am 07.11.2012 um 22:25 schrieb Ian Boston:

> On 8 November 2012 00:19, Felix Meschberger <fmesc...@adobe.com> wrote:
>> Hi,
>> 
>> Am 07.11.2012 um 14:03 schrieb Carsten Ziegeler:
>> 
>>> Hi,
>>> 
>>> do you mean using Servlet API 3 or emulating it?
>> 
>> If Sling sees that it is running in a Servlet API 3 container, the Sling's 
>> ParameterSupport should properly integrate with the Servlet API 3 API.
>> 
>> I see three options:
>> 
>> (a) The Sling (Engine) Main Servlet gets the @MultipartConfig annotation. I 
>> don't know (yet) how this annotation will actually affect the servlet 
>> registration in the Http Service.
>> 
>> (b) The Sling wrapper servlet (when deploying Sling as a Web App gets the 
>> @MultipartConfig annotation. This limits support to web app deployment and 
>> may actually break if the container is not a Servlet API 3 container.
>> 
>> (c) Provide our own implementation of the getParts and getPart(String) 
>> methods and the Part interface if we have a Servlet API 3 container. The 
>> implementations will be based on the current Sling Parameter Support.
> 
>> 
>> Somehow I have the impression, that (c) is probably the best we can do.
> 
> I agree, a and b are all or nothing options and I suspect that the
> whole point of @MultpartConfig is to tell the servlet engine that this
> servlet is special and needs a different, possibly less optimal
> handling. Doing that to all Sling servlets might be a disadvantage (I
> have not tested that theory).
> 
> Does this mean that Sling servlet will be able to use @MultipartConfig
> and get special treatment wrt the handling of the parts as if they
> were in a Servlet 3 container ?

No, Sling does not care for @MultipartConfig. The Sling always handled 
multi-part/form-data in the ParameterSupport classes and exposed them as 
RequestParameter objects. Approach (c) would just expose these parameters 
through the Servlet API 3 in addition.

Regards
Felix

> 
> Ian
> 
>> 
>> Regards
>> Felix
>> 
>>> 
>>> Regards
>>> Carsten
>>> 
>>> 2012/11/7 Felix Meschberger <fmesc...@adobe.com>:
>>>> Hi all,
>>>> 
>>>> I just realized, that in Servlet API 3 there is now official support for 
>>>> servlet containers to handle multi-part/form-data requests and expose them 
>>>> through the request:
>>>> 
>>>>  public Collection<Part> getParts()
>>>>  public Part getPart(String name)
>>>> 
>>>> Where Part has these methods:
>>>> 
>>>>  void delete()
>>>>  String getContentType()
>>>>  String getHeader(String name)
>>>>  Collection<String> getHeaderNames()
>>>>  Collection<String> getHeaders(String name)
>>>>  InputStream getInputStream()
>>>>  String getName()
>>>>  long getSize()
>>>>  void write(String fileName)
>>>> 
>>>> This requires the Servlet to be annotated with @MultipartConfig, though, 
>>>> otherwise the servlet container will not do anything.
>>>> 
>>>> What is your opinion ? Should we retrofit our multi-part/form-data support 
>>>> into the Servlet API 3 API ?
>>>> 
>>>> Regards
>>>> Felix
>>> 
>>> 
>>> 
>>> --
>>> Carsten Ziegeler
>>> cziege...@apache.org
>> 

Reply via email to