No problem, thanks.

I think it will help others to have a working example of a File Upload using 
pure OSGi JAX-RS Whiteboard Specification, all the samples I have found do not 
go there.

Best regards,
Alex soto




> On Dec 1, 2020, at 8:43 AM, Jean-Baptiste Onofre <[email protected]> wrote:
> 
> Thanks for the update.
> 
> I’m pretty busy with ActiveMQ, Decanter, Camel and Karaf5 PoC, but I will 
> take a look tomorrow.
> 
> Regards
> JB
> 
>> Le 1 déc. 2020 à 14:29, Alex Soto <[email protected] 
>> <mailto:[email protected]>> a écrit :
>> 
>> Hi JB,
>> 
>> Yes, Aries JAXRS 1.0.10. 
>> I suppose it is PAX-WEB, or whatever the default is for Karaf 4.3.0. 
>> 
>> The class:
>> 
>> import javax.servlet.ServletException;
>> import javax.servlet.annotation.MultipartConfig;
>> import javax.servlet.http.HttpServletRequest;
>> import javax.servlet.http.Part;
>> import javax.ws.rs.Consumes;
>> import javax.ws.rs.DELETE;
>> import javax.ws.rs.GET;
>> import javax.ws.rs.PATCH;
>> import javax.ws.rs.POST;
>> import javax.ws.rs.Path;
>> import javax.ws.rs.PathParam;
>> import javax.ws.rs.Produces;
>> import javax.ws.rs.core.Context;
>> import javax.ws.rs.core.MediaType;
>> import javax.ws.rs.core.SecurityContext;
>> import javax.ws.rs.core.UriInfo;
>> 
>> @Component(service = FirmwareResource.class, scope = ServiceScope.PROTOTYPE)
>> @JaxrsResource
>> @Path(ResourceConstants.FIRMWARE_PATH)
>> @JaxrsName("firmware")
>> @JaxrsApplicationSelect(Constants.JAXRS_APP_SELECT)
>> @Produces(Constants.API_MEDIA_TYPE)
>> @Protected
>> @MultipartConfig
>> public class FirmwareResource {
>> 
>>         @POST
>>      @Consumes(MediaType.MULTIPART_FORM_DATA)
>>      public void upload(@Context HttpServletRequest request) throws 
>> IOException, ServletException {
>>              Collection<Part> parts = request.getParts();
>>              ...
>> 
>> 
>> Thank you for taking a look at this.
>> 
>> Best regards,
>> Alex soto
>> 
>> 
>> 
>> 
>>> On Dec 1, 2020, at 1:23 AM, Jean-Baptiste Onofre <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Hi Alex,
>>> 
>>> In order for me to reproduce, are you using:
>>> 
>>> - Aries JAXRS 1.0.10 still (or did you update) ?
>>> - Pax Web or Felix as HTTP service ?
>>> - Do you have JEE @MultipartConfig annotation on your JAXRS class ?
>>> - @Consumers is set to MediaType.MULTIPART ?
>>> 
>>> It could be necessary to mimic the JAXRS tests by adding a fragment to 
>>> bring org.apache.cxf.jaxrs.utils.multipart to Aries JAXRS bundle.
>>> 
>>> Regards
>>> JB
>>> 
>>>> Le 30 nov. 2020 à 19:19, Alex Soto <[email protected] 
>>>> <mailto:[email protected]>> a écrit :
>>>> 
>>>> Hello,
>>>> 
>>>> Anybody has any insight about this?
>>>> 
>>>> Best regards,
>>>> Alex soto
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On Nov 13, 2020, at 8:54 AM, Alex Soto <[email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> 
>>>>> Thank you, João, for your response.
>>>>> 
>>>>> Unfortunately, it is not working for me.  I tested adding the annotation, 
>>>>> and my service look almost identical to yours. 
>>>>> 
>>>>> I found this thread https://github.com/osgi/osgi.enroute/issues/65 
>>>>> <https://github.com/osgi/osgi.enroute/issues/65> in which Tim Ward  
>>>>> explains about the need to set 
>>>>> “osgi.http.whiteboard.servlet.multipart.enabled=true” in  the 
>>>>> configuration PID “org.apache.aries.jax.rs.whiteboard.default” but that 
>>>>> is not working either.   It still fails with exception:
>>>>> 
>>>>> 
>>>>> java.lang.IllegalStateException: No multipart config for servlet
>>>>>   at org.eclipse.jetty.server.Request.getParts(Request.java:2378) 
>>>>> ~[!/:9.4.31.v20200723]
>>>>>   at org.eclipse.jetty.server.Request.getParts(Request.java:2366) 
>>>>> ~[!/:9.4.31.v20200723]
>>>>>   at 
>>>>> javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:375)
>>>>>  ~[!/:3.1.0]
>>>>> 
>>>>> 
>>>>> 
>>>>> Best regards,
>>>>> Alex soto
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Nov 13, 2020, at 4:30 AM, João Assunção <[email protected] 
>>>>>> <mailto:[email protected]>> wrote:
>>>>>> 
>>>>>> Hello Alex,
>>>>>> 
>>>>>> I used Multipart with Aries JAX-RS and I'm almost sure I didn't need to 
>>>>>> mess with the configuration.
>>>>>> I annotated the class with @MultipartConfig and placed a 
>>>>>> @Consumes(MediaType.MULIPART_FOR_DATA).
>>>>>> 
>>>>>> @Path("/firmware")
>>>>>> @Component(service = FirmwareService.class, //
>>>>>> immediate = true, //
>>>>>> scope = ServiceScope.SINGLETON, property = {
>>>>>>         JaxrsWhiteboardConstants.JAX_RS_RESOURCE + "=true",
>>>>>>         JaxrsWhiteboardConstants.JAX_RS_APPLICATION_SELECT + "=(" + 
>>>>>> JaxrsWhiteboardConstants.JAX_RS_NAME + "=myApp)"
>>>>>> })
>>>>>> @MultipartConfig
>>>>>> public class FirmwareService {
>>>>>> ....
>>>>>>     @POST
>>>>>>     @Path("/upload")
>>>>>>     @Consumes(MediaType.MULTIPART_FORM_DATA)
>>>>>>     public Response uploadFirmware(@Context HttpServletRequest request) {
>>>>>>         try {
>>>>>>             doUploadFirmware(request);
>>>>>> 
>>>>>> Hope this helps
>>>>>> 
>>>>>> João Assunção
>>>>>> 
>>>>>> Email: [email protected] <mailto:[email protected]>
>>>>>> Mobile: +351 916968984
>>>>>> Phone: +351 211933149
>>>>>> Web: www.exploitsys.com <http://www.exploitsys.com/>
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Thu, Nov 12, 2020 at 5:25 PM Alex Soto <[email protected] 
>>>>>> <mailto:[email protected]>> wrote:
>>>>>> With Karaf 4.3.0, using Aries JAX-RS 1.0.10,  how can I enable multi 
>>>>>> part support?
>>>>>> 
>>>>>> I am  adding configuration file 
>>>>>> “org.apache.aries.jax.rs.whiteboard.default.cfg”  to the “etc” directory 
>>>>>>  with property:
>>>>>> 
>>>>>>  osgi.http.whiteboard.servlet.multipart.enabled=true
>>>>>> 
>>>>>> But I am still getting error: 
>>>>>> 
>>>>>>  java.lang.IllegalStateException: No multipart config for servlet
>>>>>> 
>>>>>> When getting parts from  HttpServletRequest.
>>>>>> Any help will be appreciated.
>>>>>> 
>>>>>> Best regards,
>>>>>> Alex soto
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to