Rest DSL, Servlet, Jetty, Multi part file upload

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Rest DSL, Servlet, Jetty, Multi part file upload

Alex Soto
Hello,

Using Camel version 2.21.1,  I need to process file upload from a multi part form web UI.  My setup is as follows:

                <restConfiguration
                        component="servlet"
                        bindingMode="json"
                        contextPath=“api/rest"
                        port="{{port}}"
                        enableCORS="false">
  <componentProperty key="matchOnUriPrefix" value="true"/>
                        <endpointProperty key="servletName" value="querierRestApiServlet"/>
                        <dataFormatProperty key="prettyPrint" value="true" />
                </restConfiguration>

        <rest path="/offline" bindingMode="off">
                <put uri="/datasources" consumes="multipart/form-data">
                        <to uri="direct:/offline/datasources"/>
                </put>
           </rest>

                <route id="datasource-import">
                        <from uri="direct:/offline/datasources"/>
                        <bean ref="uploadHandler"/>
  <to uri="direct:success"/>
                </route>

My uploadHandler bean

        public void processUpload(Exchange exchange) throws Exception {
                Map<String, DataHandler> attachments = exchange.getIn().getAttachments();
                if (attachments.size() == 0) {
                        log.warn("No attachments found!");
                } else {
                        for (String key : attachments.keySet()) {
                                log.info("Filename: " + key);
                        }
                }
        }


My integration test:


                Part[] parts = {new StringPart("comment", “File to upload"),
                                new FilePart(outPath.getFileName().toString(), outPath.toFile())};

                MultipartRequestEntity entity = new MultipartRequestEntity(parts, new HttpMethodParams());
                HttpClient httpclient = new HttpClient();
                PutMethod httppost = new PutMethod("http://localhost:8182/api/rest/offline/datasources");
                httppost.setRequestEntity(entity);
                int status = httpclient.executeMethod(httppost);


The problem is that upload handler never receives any attachments.  Any help would be appreciated.

Best regards,
Alex soto