Example usage for org.apache.commons.httpclient.methods.multipart FilePart FilePart

List of usage examples for org.apache.commons.httpclient.methods.multipart FilePart FilePart

Introduction

In this page you can find the example usage for org.apache.commons.httpclient.methods.multipart FilePart FilePart.

Prototype

public FilePart(String paramString, PartSource paramPartSource) 

Source Link

Usage

From source file:org.apache.camel.component.jetty.MultiPartFormWithCustomFilterTest.java

@Test
public void testSendMultiPartFormOverrideEnableMultpartFilterFalse() throws Exception {
    HttpClient httpclient = new HttpClient();

    File file = new File("src/main/resources/META-INF/NOTICE.txt");

    PostMethod httppost = new PostMethod("http://localhost:" + getPort() + "/test2");
    Part[] parts = { new StringPart("comment", "A binary file of some kind"),
            new FilePart(file.getName(), file) };

    MultipartRequestEntity reqEntity = new MultipartRequestEntity(parts, httppost.getParams());
    httppost.setRequestEntity(reqEntity);

    int status = httpclient.executeMethod(httppost);

    assertEquals("Get a wrong response status", 200, status);
    assertNotNull("Did not use custom multipart filter", httppost.getResponseHeader("MyMultipartFilter"));
}

From source file:org.apache.servicemix.http.HttpSpringTest.java

public void testMimeWithHttpClient() throws Exception {
    File f = new File(getClass().getResource("servicemix.jpg").getFile());
    PostMethod filePost = new PostMethod("http://localhost:18192/Service/");
    Part[] parts = { new StringPart("request", "<dummy/>"), new FilePart(f.getName(), f) };
    RequestEntity entity = new MultipartRequestEntity(parts, filePost.getParams());
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    entity.writeRequest(baos);/*from  ww w .  ja v a  2  s .com*/
    logger.info(baos);
    filePost.setRequestEntity(entity);
    HttpClient client = new HttpClient();
    int status = client.executeMethod(filePost);
    assertEquals(200, status);
    filePost.releaseConnection();
}

From source file:org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.java

/** Create a node under given path, using a POST to Sling
 *  @param url under which node is created
 *  @param multiPart if true, does a multipart POST
 *  @param localFile file to upload/*from  w w w  . j a va  2s .  co  m*/
 *  @param fieldName name of the file field
 *  @param typeHint typeHint of the file field 
 *  @return the URL that Sling provides to display the node
 */
public String createNode(String url, NameValuePairList clientNodeProperties, Map<String, String> requestHeaders,
        boolean multiPart, File localFile, String fieldName, String typeHint) throws IOException {

    final PostMethod post = new PostMethod(url);
    post.setFollowRedirects(false);

    // create a private copy of the properties to not tamper with
    // the properties of the client
    NameValuePairList nodeProperties = new NameValuePairList(clientNodeProperties);

    // add sling specific properties
    nodeProperties.prependIfNew(":redirect", "*");
    nodeProperties.prependIfNew(":displayExtension", "");
    nodeProperties.prependIfNew(":status", "browser");

    // add fake property - otherwise the node is not created
    if (clientNodeProperties == null) {
        nodeProperties.add("jcr:created", "");
    }

    // force form encoding to UTF-8, which is what we use to convert the
    // string parts into stream data
    nodeProperties.addOrReplace("_charset_", "UTF-8");

    if (nodeProperties.size() > 0) {
        if (multiPart) {
            final List<Part> partList = new ArrayList<Part>();
            for (NameValuePair e : nodeProperties) {
                if (e.getValue() != null) {
                    partList.add(new StringPart(e.getName(), e.getValue(), "UTF-8"));
                }
            }
            if (localFile != null) {
                partList.add(new FilePart(fieldName, localFile));
                if (typeHint != null) {
                    partList.add(new StringPart(fieldName + "@TypeHint", typeHint));
                }
            }
            final Part[] parts = partList.toArray(new Part[partList.size()]);
            post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));
        } else {
            post.getParams().setContentCharset("UTF-8");
            for (NameValuePair e : nodeProperties) {
                post.addParameter(e.getName(), e.getValue());
            }
        }
    }

    if (requestHeaders != null) {
        for (Map.Entry<String, String> e : requestHeaders.entrySet()) {
            post.addRequestHeader(e.getKey(), e.getValue());
        }
    }

    final int expected = 302;
    final int status = httpClient.executeMethod(post);
    if (status != expected) {
        throw new HttpStatusCodeException(expected, status, "POST", url,
                HttpTestBase.getResponseBodyAsStream(post, 0));
    }
    String location = post.getResponseHeader("Location").getValue();
    post.releaseConnection();
    // simple check if host is missing
    if (!location.startsWith("http://")) {
        String host = HttpTestBase.HTTP_BASE_URL;
        int idx = host.indexOf('/', 8);
        if (idx > 0) {
            host = host.substring(0, idx);
        }
        location = host + location;
    }
    return location;
}

From source file:org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.java

/** Upload to an file node structure, see SLING-168 */
public void uploadToFileNode(String url, File localFile, String fieldName, String typeHint) throws IOException {

    final Part[] parts = new Part[typeHint == null ? 1 : 2];
    parts[0] = new FilePart(fieldName, localFile);
    if (typeHint != null) {
        parts[1] = new StringPart(fieldName + "@TypeHint", typeHint);
    }//from  w ww .  ja  v  a2 s  .  com
    final PostMethod post = new PostMethod(url);
    post.setFollowRedirects(false);
    post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));

    final int status = httpClient.executeMethod(post);
    final int expected = 200;
    if (status != expected) {
        throw new HttpStatusCodeException(expected, status, "POST",
                HttpTestBase.getResponseBodyAsStream(post, 0));
    }
}

From source file:org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.java

/** Upload multiple files to file node structures */
public void uploadToFileNodes(String url, File[] localFiles, String[] fieldNames, String[] typeHints)
        throws IOException {

    List<Part> partsList = new ArrayList<Part>();
    for (int i = 0; i < localFiles.length; i++) {
        Part filePart = new FilePart(fieldNames[i], localFiles[i]);
        partsList.add(filePart);//from www.  j  a v  a 2  s.co m
        if (typeHints != null) {
            Part typeHintPart = new StringPart(fieldNames[i] + "@TypeHint", typeHints[i]);
            partsList.add(typeHintPart);
        }
    }

    final Part[] parts = partsList.toArray(new Part[partsList.size()]);
    final PostMethod post = new PostMethod(url);
    post.setFollowRedirects(false);
    post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));

    final int expected = 200;
    final int status = httpClient.executeMethod(post);
    if (status != expected) {
        throw new HttpStatusCodeException(expected, status, "POST",
                HttpTestBase.getResponseBodyAsStream(post, 0));
    }
}

From source file:org.apache.sling.ide.impl.resource.transport.UpdateContentCommand.java

@Override
public Result<Void> execute() {
    PostMethod post = new PostMethod(getPath());
    try {//from  w  w w .j ava 2 s . co  m
        List<Part> parts = new ArrayList<>();
        for (Map.Entry<String, Object> property : properties.entrySet()) {
            if (ProtectedNodes.exists(property.getKey())) {
                continue;
            }

            Object propValue = property.getValue();

            if (propValue instanceof String) {
                parts.add(new StringPart(property.getKey(), (String) propValue));
            } else if (property != null) {
                // TODO handle multi-valued properties
                System.err.println("Unable to handle property " + property.getKey() + " of type "
                        + property.getValue().getClass());
            }
        }
        File f = new File(fileInfo.getLocation());
        if (f.isFile()) {
            parts.add(new FilePart(fileInfo.getName(), f));
        }
        post.setRequestEntity(
                new MultipartRequestEntity(parts.toArray(new Part[parts.size()]), post.getParams()));
        httpClient.getState().setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(repositoryInfo.getUsername(), repositoryInfo.getPassword()));
        httpClient.getParams().setAuthenticationPreemptive(true);
        int responseStatus = httpClient.executeMethod(post);

        return resultForResponseStatus(responseStatus);
    } catch (Exception e) {
        return AbstractResult.failure(new RepositoryException(e));
    } finally {
        post.releaseConnection();
    }
}

From source file:org.apache.sling.ide.osgi.impl.HttpOsgiClient.java

@Override
public void installBundle(InputStream in, String fileName) throws OsgiClientException {

    if (in == null) {
        throw new IllegalArgumentException("in may not be null");
    }//from w  w  w  .ja  v a 2 s  .  co m

    if (fileName == null) {
        throw new IllegalArgumentException("fileName may not be null");
    }

    // append pseudo path after root URL to not get redirected for nothing
    final PostMethod filePost = new PostMethod(repositoryInfo.appendPath("system/console/install"));

    try {
        // set referrer
        filePost.setRequestHeader("referer", "about:blank");

        List<Part> partList = new ArrayList<>();
        partList.add(new StringPart("action", "install"));
        partList.add(new StringPart("_noredir_", "_noredir_"));
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        IOUtils.copy(in, baos);
        PartSource partSource = new ByteArrayPartSource(fileName, baos.toByteArray());
        partList.add(new FilePart("bundlefile", partSource));
        partList.add(new StringPart("bundlestart", "start"));

        Part[] parts = partList.toArray(new Part[partList.size()]);

        filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));

        int status = getHttpClient().executeMethod(filePost);
        if (status != 200) {
            throw new OsgiClientException("Method execution returned status " + status);
        }
    } catch (IOException e) {
        throw new OsgiClientException(e);
    } finally {
        filePost.releaseConnection();
    }
}

From source file:org.apache.sling.ide.osgi.impl.HttpOsgiClient.java

@Override
public void installLocalBundle(final InputStream jarredBundle, String sourceLocation)
        throws OsgiClientException {

    if (jarredBundle == null) {
        throw new IllegalArgumentException("jarredBundle may not be null");
    }//from w w  w . java  2 s .co  m

    new LocalBundleInstaller(getHttpClient(), repositoryInfo) {

        @Override
        void configureRequest(PostMethod method) throws IOException {

            Part[] parts = new Part[] { new FilePart("bundle",
                    new ByteArrayPartSource("bundle.jar", IOUtils.toByteArray(jarredBundle))) };
            method.setRequestEntity(new MultipartRequestEntity(parts, method.getParams()));
        }
    }.installBundle();
}

From source file:org.apache.sling.maven.bundlesupport.AbstractBundleDeployMojo.java

private void post(String targetURL, File file) throws MojoExecutionException {

    PostMethod filePost = new PostMethod(targetURL);
    try {//from w  w  w .j a  v  a  2s. co  m
        Part[] parts = { new FilePart(file.getName(), new FilePartSource(file.getName(), file)),
                new StringPart("_noredir_", "_noredir_") };
        filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
        HttpClient client = new HttpClient();
        client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
        int status = client.executeMethod(filePost);
        if (status == HttpStatus.SC_OK) {
            getLog().info("Bundle deployed");
        } else {
            String msg = "Deployment failed, cause: " + HttpStatus.getStatusText(status);
            if (failOnError) {
                throw new MojoExecutionException(msg);
            } else {
                getLog().error(msg);
            }
        }
    } catch (Exception ex) {
        throw new MojoExecutionException("Deployment on " + targetURL + " failed, cause: " + ex.getMessage(),
                ex);
    } finally {
        filePost.releaseConnection();
    }
}

From source file:org.apache.sling.maven.bundlesupport.AbstractBundleInstallMojo.java

/**
 * Install the bundle via POST to the Felix Web Console
 * @param targetURL the URL to the Felix Web Console Bundles listing
 * @param file the file to POST/* w  w  w.ja  va 2 s.c o  m*/
 * @throws MojoExecutionException
 * @see <a href="http://felix.apache.org/documentation/subprojects/apache-felix-web-console/web-console-restful-api.html#post-requests">Webconsole RESTful API</a>
 * @see <a href="https://github.com/apache/felix/blob/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java">BundlesServlet@Github</a>
 */
protected void postToFelix(String targetURL, File file) throws MojoExecutionException {

    // append pseudo path after root URL to not get redirected for nothing
    final PostMethod filePost = new PostMethod(targetURL + "/install");

    try {
        // set referrer
        filePost.setRequestHeader("referer", "about:blank");

        List<Part> partList = new ArrayList<Part>();
        partList.add(new StringPart("action", "install"));
        partList.add(new StringPart("_noredir_", "_noredir_"));
        partList.add(new FilePart("bundlefile", new FilePartSource(file.getName(), file)));
        partList.add(new StringPart("bundlestartlevel", bundleStartLevel));

        if (bundleStart) {
            partList.add(new StringPart("bundlestart", "start"));
        }

        if (refreshPackages) {
            partList.add(new StringPart("refreshPackages", "true"));
        }

        Part[] parts = partList.toArray(new Part[partList.size()]);

        filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));

        int status = getHttpClient().executeMethod(filePost);
        if (status == HttpStatus.SC_OK) {
            getLog().info("Bundle installed");
        } else {
            String msg = "Installation failed, cause: " + HttpStatus.getStatusText(status);
            if (failOnError) {
                throw new MojoExecutionException(msg);
            } else {
                getLog().error(msg);
            }
        }
    } catch (Exception ex) {
        throw new MojoExecutionException("Installation on " + targetURL + " failed, cause: " + ex.getMessage(),
                ex);
    } finally {
        filePost.releaseConnection();
    }
}