You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@clerezza.apache.org by Luigi Selmi <lu...@gmail.com> on 2014/02/04 16:32:52 UTC

multipart messages upload

Hi all,

I need to upload rdf files to a service to be stored in a graph. I use
Clerezza within Stanbol and tried to implement the service like in the
following code snippet

@POST
    @Path("multipartrdf")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces("text/plain")
    public String uploadMultipartRdf(@Context final UriInfo uriInfo,
            @HeaderParam("Content-Type") String mediaType,
            @FormDataParam("data") InputStream stream,
            @FormDataParam("dataset") String dataset) throws Exception {

        AccessController.checkPermission(new AllPermission());
        final MGraph graph = new SimpleMGraph();

        if(mediaType.equals(SupportedFormat.RDF_XML)) {
            parser.parse(graph, stream, SupportedFormat.RDF_XML);
        }

The problem here is that I need to add the following dependencies to my
project's pom file

<dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey.contribs</groupId>
            <artifactId>jersey-multipart</artifactId>
            <version>1.8</version>
        </dependency>
    </dependencies>

The project is compiled but is not activated when I try to install it
because I need to import the same bundles in the Felix framework and it
raises the following conflicts:

Cannot start (org.osgi.framework.
BundleException: Uses constraint violation. Unable to resolve bundle
revision eu.fusepool.datalifecycle [182.1] because it is exposed to package
'javax.ws.rs' from bundle revisions com.sun.jersey.core [274.0] and
javax.ws.rs-api [267.0] via two dependency chains.

Chain 1:
  eu.fusepool.datalifecycle [182.1]
    import: (&(osgi.wiring.package=javax.ws.rs
)(version>=1.0.0)(!(version>=3.0.0)))
     |
    export: osgi.wiring.package=javax.ws.rs
  com.sun.jersey.core [274.0]

Chain 2:
  eu.fusepool.datalifecycle [182.1]
    import: (osgi.wiring.package=org.apache.clerezza.jaxrs.utils)
     |
    export: osgi.wiring.package=org.apache.clerezza.jaxrs.utils; uses:=
javax.ws.rs
  org.apache.clerezza.jaxrs.utils [147.0]
    import: (&(osgi.wiring.package=javax.ws.rs
)(version>=1.0.0)(!(version>=3.0.0)))
     |
    export: osgi.wiring.package=javax.ws.rs
  javax.ws.rs-api [267.0]) org.osgi.framework.BundleException: Uses
constraint violation. Unable to resolve bundle revision
eu.fusepool.datalifecycle [182.1] because it is exposed to package '
javax.ws.rs' from bundle revisions com.sun.jersey.core [274.0] and
javax.ws.rs-api [267.0] via two dependency chains.

Looking at the Clarezza API it seems there are some utilities to handle
multipart messages so that I shouldn't have the issues above but I couldn't
find any code snippet or example on how to use those utilities, can anyone
point me to an example ?

Thanks in advance

Luigi

Re: multipart messages upload

Posted by Reto Gmür <re...@wymiwyg.com>.
Hi Luigi

The jersey artifacts you are referring to work only with jersey. The
message body of a mulipart request can be parsed with standard jax-rs means.

Clerezza has a MessageBodyReader to parse Multi-Part requests. Rather than
using Non-Standard annotations you can use MultiPartBody. Simply let your
method have an unnatoated argument of type MultiPartBody.

http://clerezza.apache.org/apidocs/org/apache/clerezza/jaxrs/utils/form/MultiPartBody.html


Cheers,
Reto


On Tue, Feb 4, 2014 at 4:32 PM, Luigi Selmi <lu...@gmail.com> wrote:

> Hi all,
>
> I need to upload rdf files to a service to be stored in a graph. I use
> Clerezza within Stanbol and tried to implement the service like in the
> following code snippet
>
> @POST
>     @Path("multipartrdf")
>     @Consumes(MediaType.MULTIPART_FORM_DATA)
>     @Produces("text/plain")
>     public String uploadMultipartRdf(@Context final UriInfo uriInfo,
>             @HeaderParam("Content-Type") String mediaType,
>             @FormDataParam("data") InputStream stream,
>             @FormDataParam("dataset") String dataset) throws Exception {
>
>         AccessController.checkPermission(new AllPermission());
>         final MGraph graph = new SimpleMGraph();
>
>         if(mediaType.equals(SupportedFormat.RDF_XML)) {
>             parser.parse(graph, stream, SupportedFormat.RDF_XML);
>         }
>
> The problem here is that I need to add the following dependencies to my
> project's pom file
>
> <dependency>
>             <groupId>com.sun.jersey</groupId>
>             <artifactId>jersey-server</artifactId>
>             <version>1.8</version>
>         </dependency>
>         <dependency>
>             <groupId>com.sun.jersey.contribs</groupId>
>             <artifactId>jersey-multipart</artifactId>
>             <version>1.8</version>
>         </dependency>
>     </dependencies>
>
> The project is compiled but is not activated when I try to install it
> because I need to import the same bundles in the Felix framework and it
> raises the following conflicts:
>
> Cannot start (org.osgi.framework.
> BundleException: Uses constraint violation. Unable to resolve bundle
> revision eu.fusepool.datalifecycle [182.1] because it is exposed to package
> 'javax.ws.rs' from bundle revisions com.sun.jersey.core [274.0] and
> javax.ws.rs-api [267.0] via two dependency chains.
>
> Chain 1:
>   eu.fusepool.datalifecycle [182.1]
>     import: (&(osgi.wiring.package=javax.ws.rs
> )(version>=1.0.0)(!(version>=3.0.0)))
>      |
>     export: osgi.wiring.package=javax.ws.rs
>   com.sun.jersey.core [274.0]
>
> Chain 2:
>   eu.fusepool.datalifecycle [182.1]
>     import: (osgi.wiring.package=org.apache.clerezza.jaxrs.utils)
>      |
>     export: osgi.wiring.package=org.apache.clerezza.jaxrs.utils; uses:=
> javax.ws.rs
>   org.apache.clerezza.jaxrs.utils [147.0]
>     import: (&(osgi.wiring.package=javax.ws.rs
> )(version>=1.0.0)(!(version>=3.0.0)))
>      |
>     export: osgi.wiring.package=javax.ws.rs
>   javax.ws.rs-api [267.0]) org.osgi.framework.BundleException: Uses
> constraint violation. Unable to resolve bundle revision
> eu.fusepool.datalifecycle [182.1] because it is exposed to package '
> javax.ws.rs' from bundle revisions com.sun.jersey.core [274.0] and
> javax.ws.rs-api [267.0] via two dependency chains.
>
> Looking at the Clarezza API it seems there are some utilities to handle
> multipart messages so that I shouldn't have the issues above but I couldn't
> find any code snippet or example on how to use those utilities, can anyone
> point me to an example ?
>
> Thanks in advance
>
> Luigi
>