public void deploy()

in src/main/java/org/apache/sling/maven/bundlesupport/deploy/method/FelixPostDeployMethod.java [47:77]


    public void deploy(URI targetURL, File file, String bundleSymbolicName, DeployContext context) throws IOException {

        // append pseudo path after root URL to not get redirected
        // https://github.com/apache/felix-dev/blob/8e35c940a95c91f3fee09c537dbaf9665e5d027e/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java#L338
        URI postUrl = targetURL.resolve("install");
        context.getLog().debug("Installing via POST to " + postUrl);
        final HttpPost filePost = new HttpPost(postUrl);

        // set referrer
        filePost.setHeader("referer", "about:blank");
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addTextBody("action", "install");
        builder.addTextBody("_noredir_", "_noredir_");
        builder.addTextBody("bundlestartlevel", context.getBundleStartLevel());
        if (context.isBundleStart()) {
            builder.addTextBody("bundlestart", "start");
        }
        if (context.isRefreshPackages()) {
            builder.addTextBody("refreshPackages", "true");
        }
        builder.addBinaryBody("bundlefile", file);
        filePost.setEntity(builder.build());
        String response = context.getHttpClient().execute(filePost, new BasicHttpClientResponseHandler());
        // sanity check on response (has really the right servlet answered?)
        // must be empty in this case
        // (https://github.com/apache/felix-dev/blob/8e35c940a95c91f3fee09c537dbaf9665e5d027e/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java#L340)
        if (!response.isEmpty()) {
            throw new IOException("Unexpected response received from " + postUrl
                    + ". Maybe wrong endpoint? Must be empty but was: " + response);
        }
    }