Example usage for org.apache.commons.httpclient HttpClient getHttpConnectionManager

List of usage examples for org.apache.commons.httpclient HttpClient getHttpConnectionManager

Introduction

In this page you can find the example usage for org.apache.commons.httpclient HttpClient getHttpConnectionManager.

Prototype

public HttpConnectionManager getHttpConnectionManager()

Source Link

Usage

From source file:org.craftercms.cstudio.impl.service.deployment.PublishingManagerImpl.java

@Override
public void deployItemsToTarget(String site, List<PublishingSyncItem> filteredItems,
        PublishingTargetItem target) throws ContentNotFoundForPublishingException, UploadFailedException {
    LOGGER.debug("Start deploying items for site \"{0}\", target \"{1}\", number of items \"{2}\"", site,
            target.getName(), filteredItems.size());
    URL requestUrl = null;/*w  ww.j  av a2  s. c  o  m*/
    try {
        requestUrl = new URL(target.getServerUrl());
    } catch (MalformedURLException e) {
        LOGGER.error("Invalid server URL for target {0}", target.getName());
        throw new UploadFailedException(site, target.getName(), target.getServerUrl(), e);
    }

    ByteArrayPartSource baps = null;
    PartSource metadataPart = null;
    StringPart stringPart = null;
    FilePart filePart = null;

    int numberOfBuckets = filteredItems.size() / target.getBucketSize() + 1;
    Iterator<PublishingSyncItem> iter = filteredItems.iterator();
    LOGGER.debug("Divide all deployment items into {0} bucket(s) for  target {1}", numberOfBuckets,
            target.getName());
    List<DeploymentEventItem> eventItems = new ArrayList<DeploymentEventItem>();
    for (int bucketIndex = 0; bucketIndex < numberOfBuckets; bucketIndex++) {
        int cntFiles = 0;
        StringBuilder sbDeletedFiles = new StringBuilder();
        List<Part> formParts = new ArrayList<Part>();

        formParts.add(new StringPart(PASSWORD_REQUEST_PARAMETER, target.getPassword()));
        formParts.add(new StringPart(TARGET_REQUEST_PARAMETER, target.getTarget()));
        String siteId = target.getSiteId();
        if (StringUtils.isEmpty(siteId)) {
            siteId = site;
        }
        formParts.add(new StringPart(SITE_REQUEST_PARAMETER, siteId));

        LOGGER.debug("Preparing deployment items (bucket {0}) for target {1}", bucketIndex + 1,
                target.getName());

        int loopSize = (filteredItems.size() - (bucketIndex * target.getBucketSize()) > target.getBucketSize())
                ? target.getBucketSize()
                : filteredItems.size() - bucketIndex * target.getBucketSize();
        for (int j = 0; j < loopSize; j++) {
            if (iter.hasNext()) {

                PublishingSyncItem item = iter.next();
                LOGGER.debug("Parsing \"{0}\" , site \"{1}\"; for publishing on target \"{2}\"", item.getPath(),
                        item.getSite(), target.getName());
                DeploymentEventItem eventItem = new DeploymentEventItem();
                eventItem.setSite(item.getSite());
                eventItem.setPath(item.getPath());
                eventItem.setUser(item.getUser());
                eventItem.setDateTime(new Date());

                if (item.getAction() == PublishingSyncItem.Action.DELETE) {
                    eventItem.setState(DeploymentEventItem.STATE_DELETED);
                    if (sbDeletedFiles.length() > 0) {
                        sbDeletedFiles.append(FILES_SEPARATOR).append(item.getPath());
                    } else {
                        sbDeletedFiles.append(item.getPath());
                    }
                    if (item.getPath().endsWith("/" + _indexFile)) {
                        sbDeletedFiles.append(FILES_SEPARATOR)
                                .append(item.getPath().replace("/" + _indexFile, ""));
                    }
                } else {

                    if (item.getAction() == PublishingSyncItem.Action.NEW) {
                        eventItem.setState(DeploymentEventItem.STATE_NEW);
                    } else if (item.getAction() == PublishingSyncItem.Action.MOVE) {
                        eventItem.setState(DeploymentEventItem.STATE_MOVED);
                    } else {
                        eventItem.setState(DeploymentEventItem.STATE_UPDATED);
                    }

                    LOGGER.debug("Get content for \"{0}\" , site \"{1}\"", item.getPath(), item.getSite());
                    InputStream input = _contentRepository.getContent(site, null, LIVE_ENVIRONMENT,
                            item.getPath());
                    try {
                        if (input == null || input.available() < 0) {
                            if (!_contentRepository.isFolder(site, item.getPath())
                                    && _contentRepository.contentExists(site, item.getPath())) {
                                baps = null;
                                stringPart = null;
                                filePart = null;
                                formParts = null;
                                throw new ContentNotFoundForPublishingException(site, target.getName(),
                                        item.getPath());
                            } else {
                                // Content does not exist - skip deploying file
                                continue;
                            }
                        }
                    } catch (IOException err) {
                        LOGGER.error("Error reading input stream for content at path: " + item.getPath()
                                + " site: " + item.getSite());
                        if (_contentRepository.contentExists(site, item.getPath())) {
                            baps = null;
                            stringPart = null;
                            filePart = null;
                            formParts = null;
                            throw new ContentNotFoundForPublishingException(site, target.getName(),
                                    item.getPath());
                        } else {
                            // Content does not exist - skip deploying file
                            continue;
                        }
                    }
                    String fileName = _contentRepository.getFilename(site, item.getPath());

                    byte[] byteArray = null;

                    try {
                        byteArray = IOUtils.toByteArray(input);
                    } catch (IOException e) {
                        LOGGER.error("Error while converting input stream to byte array", e);
                        baps = null;
                        stringPart = null;
                        filePart = null;
                        formParts = null;
                        if (_contentRepository.contentExists(site, item.getPath())) {
                            throw new ContentNotFoundForPublishingException(site, target.getName(),
                                    item.getPath());
                        } else {
                            // Content does not exist - skip deploying file
                            continue;
                        }
                    } finally {
                        IOUtils.closeQuietly(input);
                        input = null;
                    }
                    baps = new ByteArrayPartSource(fileName, byteArray);

                    LOGGER.debug(
                            "Create http request parameters for \"{0}\" , site \"{1}\"; publishing on target \"{2}\"",
                            item.getPath(), item.getSite(), target.getName());
                    int idx = item.getPath().lastIndexOf("/");
                    String relativePath = item.getPath().substring(0, idx + 1) + fileName;
                    stringPart = new StringPart(CONTENT_LOCATION_REQUEST_PARAMETER + cntFiles, relativePath);
                    formParts.add(stringPart);
                    filePart = new FilePart(CONTENT_FILE_REQUEST_PARAMETER + cntFiles, baps);
                    formParts.add(filePart);
                    if (item.getAction() == PublishingSyncItem.Action.MOVE) {
                        if (item.getOldPath() != null && !item.getOldPath().equalsIgnoreCase(item.getPath())) {
                            LOGGER.debug("Add old path to be deleted for MOVE action (\"{0}\")",
                                    item.getOldPath());
                            eventItem.setOldPath(item.getOldPath());
                            if (sbDeletedFiles.length() > 0) {
                                sbDeletedFiles.append(",").append(item.getOldPath());
                            } else {
                                sbDeletedFiles.append(item.getOldPath());
                            }
                            if (item.getOldPath().endsWith("/" + _indexFile)) {
                                sbDeletedFiles.append(FILES_SEPARATOR)
                                        .append(item.getOldPath().replace("/" + _indexFile, ""));
                            }
                        }
                    }

                    if (target.isSendMetadata()) {
                        LOGGER.debug("Adding meta data for content \"{0}\" site \"{0}\"", item.getPath(),
                                item.getSite());
                        InputStream metadataStream = null;
                        try {
                            metadataStream = _contentRepository.getMetadataStream(site, item.getPath());
                            metadataPart = new ByteArrayPartSource(fileName + ".meta",
                                    IOUtils.toByteArray(metadataStream));
                            formParts.add(
                                    new FilePart(METADATA_FILE_REQUEST_PARAMETER + cntFiles, metadataPart));
                        } catch (IOException e) {
                            LOGGER.error("Error while creating input stream with content metadata", e);
                            baps = null;
                            stringPart = null;
                            filePart = null;
                            formParts = null;
                        } finally {
                            IOUtils.closeQuietly(metadataStream);
                            metadataPart = null;
                        }
                    }
                }
                cntFiles++;
                eventItems.add(eventItem);
            }
        }

        if (sbDeletedFiles.length() > 0) {
            formParts.add(new StringPart(DELETED_FILES_REQUEST_PARAMETER, sbDeletedFiles.toString()));
        }
        LOGGER.debug("Create http request to deploy bucket {0} for target {1}", bucketIndex + 1,
                target.getName());

        PostMethod postMethod = null;
        HttpClient client = null;
        try {

            LOGGER.debug("Create HTTP Post Method");
            postMethod = new PostMethod(requestUrl.toString());
            postMethod.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true);
            Part[] parts = new Part[formParts.size()];
            for (int i = 0; i < formParts.size(); i++)
                parts[i] = formParts.get(i);
            postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams()));
            client = new HttpClient();

            LOGGER.debug("Execute HTTP POST request \"{0}\"", postMethod.getURI());
            int status = client.executeMethod(postMethod);
            if (status == HttpStatus.SC_OK) {
                LOGGER.info("Successfully deployed bucket number {0} on target {1}", bucketIndex + 1,
                        target.getName());
            } else {
                LOGGER.error(
                        "Deployment failed for bucket number {0} on target {1}. Deployment agent returned status {2}",
                        bucketIndex + 1, target.getName(), HttpStatus.getStatusText(status));
                throw new UploadFailedException(site, target.getName(), target.getServerUrl());
            }
        } catch (HttpException e) {
            LOGGER.error("Publish failed for target {0} due to http protocol exception", target.getName());
            throw new UploadFailedException(site, target.getName(), target.getServerUrl(), e);
        } catch (IOException e) {
            LOGGER.error("Publish failed for target {0} due to I/O (transport) exception", target.getName());
            throw new UploadFailedException(site, target.getName(), target.getServerUrl(), e);
        } finally {
            LOGGER.debug("Release http connection and release resources");
            if (client != null) {
                HttpConnectionManager mgr = client.getHttpConnectionManager();
                if (mgr instanceof SimpleHttpConnectionManager) {
                    ((SimpleHttpConnectionManager) mgr).shutdown();
                }
            }
            if (postMethod != null) {
                postMethod.releaseConnection();
                postMethod = null;
                client = null;
            }
            baps = null;
            stringPart = null;
            filePart = null;
            formParts = null;
        }
    }

    LOGGER.debug("Publishing deployment event for target \"{0}\" with \"{1}\" items.", target.getName(),
            eventItems.size());
    _contentRepository.publishDeployEvent(target.getName(), eventItems);

    LOGGER.info("Deployment successful on target {0}", target.getName());
    LOGGER.debug("Finished deploying items for site \"{0}\", target \"{1}\", number of items \"{2}\"", site,
            target.getName(), filteredItems.size());
}

From source file:org.craftercms.cstudio.impl.service.deployment.PublishingManagerImpl.java

@Override
public long setTargetVersion(PublishingTargetItem target, long newVersion, String site) {
    long resoponseVersion = -1;
    if (target.getVersionUrl() != null && !target.getVersionUrl().isEmpty()) {
        LOGGER.debug("Set deployment agent version for target {0}", target.getName());
        URL versionUrl = null;//from w w w  .ja va 2 s. co m
        try {
            versionUrl = new URL(target.getVersionUrl());
        } catch (MalformedURLException e) {
            LOGGER.error("Invalid set version URL for target [%s]", target.getName());
            return resoponseVersion;
        }
        PostMethod postMethod = null;
        HttpClient client = null;
        try {
            postMethod = new PostMethod(target.getVersionUrl());
            postMethod.addParameter(TARGET_REQUEST_PARAMETER, target.getTarget());
            postMethod.addParameter(VERSION_REQUEST_PARAMETER, String.valueOf(newVersion));
            String siteId = target.getSiteId();
            if (StringUtils.isEmpty(siteId)) {
                siteId = site;
            }
            postMethod.addParameter(SITE_REQUEST_PARAMETER, site);
            client = new HttpClient();
            int status = client.executeMethod(postMethod);
            if (status == HttpStatus.SC_OK) {
                String responseText = postMethod.getResponseBodyAsString();
                if (responseText != null && !responseText.isEmpty()) {
                    resoponseVersion = Long.parseLong(responseText);
                } else {
                    resoponseVersion = 0;
                }
            }

        } catch (Exception e) {
            LOGGER.error(
                    "Target {0} responded with error while setting target version. Set version failed for url {1}",
                    target.getName(), target.getVersionUrl());

        } finally {
            if (client != null) {
                HttpConnectionManager mgr = client.getHttpConnectionManager();
                if (mgr instanceof SimpleHttpConnectionManager) {
                    ((SimpleHttpConnectionManager) mgr).shutdown();
                }
            }
            if (postMethod != null) {
                postMethod.releaseConnection();
            }
            postMethod = null;
            client = null;

        }
    }
    return resoponseVersion;
}

From source file:org.craftercms.studio.impl.v1.deployment.SyncTargetDeployer.java

@Override
public void deployFiles(String site, List<String> paths, List<String> deletedFiles)
        throws ContentNotFoundForPublishingException, UploadFailedException {
    logger.debug("Start deploying items for site \"{0}\", target \"{1}\", number of items \"{2}\"", site,
            endpointConfig.getName(), paths.size());
    URL requestUrl = null;// www .ja va  2  s  . c o  m
    try {
        requestUrl = new URL(endpointConfig.getServerUrl());
    } catch (MalformedURLException e) {
        logger.error("Invalid server URL for target {0}", endpointConfig.getName());
        throw new UploadFailedException(site, endpointConfig.getName(), endpointConfig.getServerUrl(), e);
    }

    ByteArrayPartSource baps = null;
    PartSource metadataPart = null;
    StringPart stringPart = null;
    FilePart filePart = null;

    // TODO: implement reactor version of deployment events
    int cntFiles = 0;
    StringBuilder sbDeletedFiles = new StringBuilder();
    List<Part> formParts = new ArrayList<Part>();

    formParts.add(new StringPart(PASSWORD_REQUEST_PARAMETER, endpointConfig.getPassword()));
    formParts.add(new StringPart(TARGET_REQUEST_PARAMETER, endpointConfig.getTarget()));
    String siteId = endpointConfig.getSiteId();
    if (StringUtils.isEmpty(siteId)) {
        siteId = site;
    }
    formParts.add(new StringPart(SITE_REQUEST_PARAMETER, siteId));

    logger.debug("Preparing deployment items for target {0}", endpointConfig.getName());
    for (String path : paths) {
        logger.debug("Parsing \"{0}\" , site \"{1}\"; for publishing on target \"{2}\"", path, site,
                endpointConfig.getName());
        logger.debug("Get content for \"{0}\" , site \"{1}\", environment \"{2}\"", path, site, environment);
        File file = new File(getDestinationPath(site, path, environment));
        InputStream input = null;
        try {
            input = FileUtils.openInputStream(file);
            if (input == null || input.available() < 0) {
                if (file.exists() && !file.isDirectory()) {
                    baps = null;
                    stringPart = null;
                    filePart = null;
                    formParts = null;
                    throw new ContentNotFoundForPublishingException(site, endpointConfig.getName(), path);
                } else {
                    // Content does not exist - skip deploying file
                    continue;
                }
            }
        } catch (IOException err) {
            logger.error("Error reading input stream from envirnoment store for content at path: " + path
                    + " site: " + site + " environment: " + environment);
            if (!file.exists()) {
                logger.error("File expected, but does not exist at path: " + file.getAbsolutePath());
            }
            continue;
        }
        String fileName = file.getName();

        byte[] byteArray = null;

        try {
            byteArray = IOUtils.toByteArray(input);
        } catch (IOException e) {
            logger.error("Error while converting input stream to byte array", e);
            baps = null;
            stringPart = null;
            filePart = null;
            formParts = null;
        } finally {
            IOUtils.closeQuietly(input);
            input = null;
        }
        baps = new ByteArrayPartSource(fileName, byteArray);

        logger.debug("Create http request parameters for \"{0}\" , site \"{1}\"; publishing on target \"{2}\"",
                path, site, endpointConfig.getName());
        int idx = path.lastIndexOf("/");
        String relativePath = path.substring(0, idx + 1) + fileName;
        stringPart = new StringPart(CONTENT_LOCATION_REQUEST_PARAMETER + cntFiles, relativePath);
        formParts.add(stringPart);
        filePart = new FilePart(CONTENT_FILE_REQUEST_PARAMETER + cntFiles, baps);
        formParts.add(filePart);
        /*
        if (item.getAction() == PublishingSyncItem.Action.MOVE) {
        if (item.getOldPath() != null && !item.getOldPath().equalsIgnoreCase(item.getPath())) {
            LOGGER.debug("Add old path to be deleted for MOVE action (\"{0}\")", item.getOldPath());
            eventItem.setOldPath(item.getOldPath());
            if (sbDeletedFiles.length() > 0) {
                sbDeletedFiles.append(",").append(item.getOldPath());
            } else {
                sbDeletedFiles.append(item.getOldPath());
            }
            if (item.getOldPath().endsWith("/" + _indexFile)) {
                sbDeletedFiles.append(FILES_SEPARATOR).append(item.getOldPath().replace("/" + _indexFile, ""));
            }
        }
        }*/
        cntFiles++;

        // TODO: implement metadata transfer
    }

    for (int i = 0; i < deletedFiles.size(); i++) {
        if (i > 0) {
            sbDeletedFiles.append(FILES_SEPARATOR);
        }
        sbDeletedFiles.append(deletedFiles.get(i));
    }

    if (sbDeletedFiles.length() > 0) {
        formParts.add(new StringPart(DELETED_FILES_REQUEST_PARAMETER, sbDeletedFiles.toString()));
    }
    logger.debug("Create http request to deploy content for target {0} ({1})", endpointConfig.getName(),
            endpointConfig.getTarget());
    PostMethod postMethod = null;
    HttpClient client = null;
    try {
        logger.debug("Create HTTP Post Method");
        postMethod = new PostMethod(requestUrl.toString());
        postMethod.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE, true);
        Part[] parts = new Part[formParts.size()];
        for (int i = 0; i < formParts.size(); i++)
            parts[i] = formParts.get(i);
        postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams()));
        client = new HttpClient();

        logger.debug("Execute HTTP POST request \"{0}\"", postMethod.getURI());
        int status = client.executeMethod(postMethod);
        if (status == HttpStatus.SC_OK) {
            logger.info("Successfully deployed on target {0}", endpointConfig.getName());
        } else {
            logger.error("Deployment failed for on target {1}. Deployment agent returned status {2}",
                    endpointConfig.getName(), HttpStatus.getStatusText(status));
            throw new UploadFailedException(site, endpointConfig.getName(), endpointConfig.getServerUrl());
        }
    } catch (HttpException e) {
        logger.error("Publish failed for target {0} due to http protocol exception", endpointConfig.getName());
        throw new UploadFailedException(site, endpointConfig.getName(), endpointConfig.getServerUrl(), e);
    } catch (IOException e) {
        logger.error("Publish failed for target {0} due to I/O (transport) exception",
                endpointConfig.getName());
        throw new UploadFailedException(site, endpointConfig.getName(), endpointConfig.getServerUrl(), e);
    } finally {
        logger.debug("Release http connection and release resources");
        if (client != null) {
            HttpConnectionManager mgr = client.getHttpConnectionManager();
            if (mgr instanceof SimpleHttpConnectionManager) {
                ((SimpleHttpConnectionManager) mgr).shutdown();
            }
        }
        if (postMethod != null) {
            postMethod.releaseConnection();
            postMethod = null;
            client = null;
        }
        baps = null;
        stringPart = null;
        filePart = null;
        formParts = null;
    }

    //LOGGER.debug("Publishing deployment event for target \"{0}\" with \"{1}\" items.", target.getName(), 0/*eventItems.size()*/);
    //contentRepository.publishDeployEvent(target.getName(), eventItems);

    logger.info("Deployment successful on target {0}", endpointConfig.getName());
    logger.debug("Finished deploying items for site \"{0}\", target \"{1}\", number of items \"{2}\"", site,
            endpointConfig.getName(), paths.size());
}

From source file:org.craftercms.studio.impl.v1.service.deployment.PublishingManagerImpl.java

@Override
public boolean checkConnection(DeploymentEndpointConfigTO target) {
    boolean connOk = false;
    if (target.getStatusUrl() != null && !target.getStatusUrl().isEmpty()) {
        LOGGER.debug(String.format("Check deployment agent status for target ", target.getName()));
        URL statusUrl = null;/*from  w w  w.  j a va  2 s .c  o  m*/
        try {
            statusUrl = new URL(target.getStatusUrl());
        } catch (MalformedURLException e) {
            LOGGER.error(
                    String.format("Invalid endpoint status URL for publishing channel [%s]", target.getName()),
                    e);
        }
        GetMethod getMethod = null;
        HttpClient client = null;
        try {
            getMethod = new GetMethod(target.getStatusUrl());
            client = new HttpClient();
            int status = client.executeMethod(getMethod);
            if (status == HttpStatus.SC_OK) {
                connOk = true;
            }

        } catch (Exception e) {
            LOGGER.error(String.format("Target (%s) is not available. Status check failed for url %s",
                    target.getName(), target.getStatusUrl()));
        } finally {
            if (client != null) {
                HttpConnectionManager mgr = client.getHttpConnectionManager();
                if (mgr instanceof SimpleHttpConnectionManager) {
                    ((SimpleHttpConnectionManager) mgr).shutdown();
                }
            }
            if (getMethod != null) {
                getMethod.releaseConnection();
            }
            getMethod = null;
            client = null;

        }
    }
    return connOk;
}

From source file:org.craftercms.studio.impl.v1.service.deployment.PublishingManagerImpl.java

@Override
public long getTargetVersion(DeploymentEndpointConfigTO target, String site) {
    long version = -1;
    if (target.getVersionUrl() != null && !target.getVersionUrl().isEmpty()) {
        LOGGER.debug(String.format("Get deployment agent version for target ", target.getName()));
        URL versionUrl = null;/*from w  ww  . j  ava 2  s .c o  m*/
        try {
            versionUrl = new URL(target.getVersionUrl());
        } catch (MalformedURLException e) {
            LOGGER.error(String.format("Invalid get version URL for target [%s]", target.getName()), e);
        }
        GetMethod getMethod = null;
        HttpClient client = null;
        try {
            getMethod = new GetMethod(target.getVersionUrl());
            String siteId = target.getSiteId();
            if (StringUtils.isEmpty(siteId)) {
                siteId = site;
            }
            getMethod.setQueryString(
                    new NameValuePair[] { new NameValuePair(TARGET_REQUEST_PARAMETER, target.getTarget()),
                            new NameValuePair(SITE_REQUEST_PARAMETER, siteId) });
            client = new HttpClient();
            int status = client.executeMethod(getMethod);
            if (status == HttpStatus.SC_OK) {
                InputStream responseStream = getMethod.getResponseBodyAsStream();
                String responseText = IOUtils.toString(responseStream);
                if (responseText != null && !responseText.isEmpty()) {
                    version = Long.parseLong(responseText.trim());
                } else {
                    version = 0;
                }
            }

        } catch (Exception e) {
            //LOGGER.error(String.format("Target (%s) responded with error while checking target version. Get version failed for url %s", target.getName(), target.getVersionUrl()));

        } finally {
            if (client != null) {
                HttpConnectionManager mgr = client.getHttpConnectionManager();
                if (mgr instanceof SimpleHttpConnectionManager) {
                    ((SimpleHttpConnectionManager) mgr).shutdown();
                }
            }
            if (getMethod != null) {
                getMethod.releaseConnection();
            }
            getMethod = null;
            client = null;

        }
    }
    return version;
}

From source file:org.craftercms.studio.impl.v1.service.deployment.PublishingManagerImpl.java

@Override
public long setTargetVersion(DeploymentEndpointConfigTO target, long newVersion, String site) {
    long resoponseVersion = -1;
    if (target.getVersionUrl() != null && !target.getVersionUrl().isEmpty()) {
        LOGGER.debug("Set deployment agent version for target {0}", target.getName());
        URL versionUrl = null;//from   w w w.  j  a  v  a2  s.  c  o m
        try {
            versionUrl = new URL(target.getVersionUrl());
        } catch (MalformedURLException e) {
            LOGGER.error("Invalid set version URL for target [%s]", target.getName());
            return resoponseVersion;
        }
        PostMethod postMethod = null;
        HttpClient client = null;
        try {
            postMethod = new PostMethod(target.getVersionUrl());
            postMethod.addParameter(TARGET_REQUEST_PARAMETER, target.getTarget());
            postMethod.addParameter(VERSION_REQUEST_PARAMETER, String.valueOf(newVersion));
            String siteId = target.getSiteId();
            if (StringUtils.isEmpty(siteId)) {
                siteId = site;
            }
            postMethod.addParameter(SITE_REQUEST_PARAMETER, site);
            client = new HttpClient();
            int status = client.executeMethod(postMethod);
            if (status == HttpStatus.SC_OK) {
                InputStream responseStream = postMethod.getResponseBodyAsStream();
                String responseText = IOUtils.toString(responseStream);
                if (responseText != null && !responseText.isEmpty()) {
                    resoponseVersion = Long.parseLong(responseText);
                } else {
                    resoponseVersion = 0;
                }
            }

        } catch (Exception e) {
            LOGGER.error(
                    "Target {0} responded with error while setting target version. Set version failed for url {1}",
                    target.getName(), target.getVersionUrl());

        } finally {
            if (client != null) {
                HttpConnectionManager mgr = client.getHttpConnectionManager();
                if (mgr instanceof SimpleHttpConnectionManager) {
                    ((SimpleHttpConnectionManager) mgr).shutdown();
                }
            }
            if (postMethod != null) {
                postMethod.releaseConnection();
            }
            postMethod = null;
            client = null;

        }
    }
    return resoponseVersion;
}

From source file:org.deegree.framework.util.HttpUtils.java

/**
 * //from   w  w  w  .ja va 2 s  .  c o  m
 * @param url
 * @param content
 * @param timeout
 *            timeout in milliseconds
 * @param user
 *            (can be <code>null</code>)
 * @param password
 *            (can be <code>null</code>)
 * @param contentType
 *            request content mime type (can be <code>null</code>)
 * @param encoding
 *            request encoding (can be <code>null</code>)
 * @param header
 * 
 * @return result of http post request
 * @throws HttpException
 * @throws IOException
 */
public static HttpMethod performHttpPost(String url, InputStream content, int timeout, String user,
        String password, String contentType, String encoding, Map<String, String> header)
        throws HttpException, IOException {
    HttpClient client = new HttpClient();
    URL tmp = new URL(url);
    WebUtils.enableProxyUsage(client, tmp);
    url = tmp.toExternalForm();
    client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
    client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);

    PostMethod pm = new PostMethod(url);
    String ct = contentType;
    if (ct != null && encoding != null) {
        ct += ("; " + encoding);
    }
    if (ct != null) {
        pm.setRequestEntity(new InputStreamRequestEntity(content, ct));
    } else {
        pm.setRequestEntity(new InputStreamRequestEntity(content));
    }
    if (header != null) {
        Iterator<String> iter = header.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String) iter.next();
            if (!"content-length".equalsIgnoreCase(key)) {
                pm.addRequestHeader(new Header(key, header.get(key)));
            }
        }
    }

    setHTTPCredentials(pm, user, password);
    client.executeMethod(pm);
    if (LOG.getLevel() == ILogger.LOG_DEBUG) {
        LOG.logDebug(pm.getResponseBodyAsString());
    }
    if (pm.getStatusCode() != 200) {
        throw new HttpException("status code: " + pm.getStatusCode());
    }
    return pm;
}

From source file:org.deegree.framework.util.HttpUtils.java

/**
 * //  w w  w  . j  a va 2 s . c o m
 * @param url
 * @param content
 * @param timeout
 *            timeout in milliseconds
 * @param user
 *            (can <code>null</code>)
 * @param password
 *            (can <code>null</code>)
 * @param contentType
 *            request content mime type (can be <code>null</code>)
 * @param encoding
 *            request encoding (can be <code>null</code>)
 * @param header
 * @return result of http post request
 * @throws HttpException
 * @throws IOException
 */
public static HttpMethod performHttpPost(String url, String content, int timeout, String user, String password,
        String contentType, String encoding, Map<String, String> header) throws HttpException, IOException {
    HttpClient client = new HttpClient();
    URL tmp = new URL(url);
    WebUtils.enableProxyUsage(client, tmp);
    url = tmp.toExternalForm();
    client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
    client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
    PostMethod pm = new PostMethod(url);

    pm.setRequestEntity(new StringRequestEntity(content, contentType, encoding));

    if (header != null) {
        Iterator<String> iter = header.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String) iter.next();
            if (!"content-length".equalsIgnoreCase(key)) {
                pm.addRequestHeader(new Header(key, header.get(key)));
            }
        }
    }
    pm.addRequestHeader(new Header("content-length", Integer.toString(content.getBytes().length)));

    setHTTPCredentials(pm, user, password);
    client.executeMethod(pm);
    if (LOG.getLevel() == ILogger.LOG_DEBUG) {
        LOG.logDebug(pm.getResponseBodyAsString());
    }
    if (pm.getStatusCode() != 200) {
        throw new HttpException("status code: " + pm.getStatusCode());
    }
    return pm;
}

From source file:org.deegree.framework.util.HttpUtils.java

/**
 * //from w  w w  .  ja  v  a 2  s .co  m
 * @param url
 * @param content
 * @param timeout
 *            timeout in milliseconds
 * @param user
 *            (can <code>null</code>)
 * @param password
 *            (can <code>null</code>)
 * @param header
 * @return result of http post request
 * @throws HttpException
 * @throws IOException
 */
public static HttpMethod performHttpPost(String url, XMLFragment content, int timeout, String user,
        String password, Map<String, String> header) throws HttpException, IOException {

    HttpClient client = new HttpClient();
    URL tmp = new URL(url);
    WebUtils.enableProxyUsage(client, tmp);
    url = tmp.toExternalForm();
    client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
    client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
    PostMethod pm = new PostMethod(url);

    ByteArrayOutputStream bos = new ByteArrayOutputStream(1000000);
    Properties props = new Properties();
    props.put(OutputKeys.ENCODING, "UTF-8");
    content.write(bos, props);

    pm.setRequestEntity(new ByteArrayRequestEntity(bos.toByteArray(), "text/xml"));

    if (header != null) {
        Iterator<String> iter = header.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String) iter.next();
            if (!"content-length".equalsIgnoreCase(key)) {
                pm.addRequestHeader(new Header(key, header.get(key)));
            }
        }
    }
    pm.addRequestHeader(new Header("content-length", Integer.toString(bos.toByteArray().length)));
    bos.close();

    setHTTPCredentials(pm, user, password);
    client.executeMethod(pm);
    if (LOG.getLevel() == ILogger.LOG_DEBUG) {
        LOG.logDebug(pm.getResponseBodyAsString());
    }
    if (pm.getStatusCode() != 200) {
        throw new HttpException("status code: " + pm.getStatusCode());
    }
    return pm;
}

From source file:org.deegree.framework.util.HttpUtils.java

/**
 * /*from w w w. jav  a  2s . c  o  m*/
 * @param url
 *            e.g. http://localhost:8080/deegree/services
 * @param request
 *            e.g. service=WMS&request=GetCapabilities
 * @param timeout
 *            timeout in milliseconds
 * @param user
 *            (can be <code>null</code>)
 * @param password
 *            (can be <code>null</code>)
 * @param header
 * @return result of http get request
 * @throws HttpException
 * @throws IOException
 */
public static HttpMethod performHttpGet(String url, String request, int timeout, String user, String password,
        Map<String, String> header) throws HttpException, IOException {
    if (request != null && request.startsWith("&")) {
        request = request.substring(1);
    }
    if (url != null && url.endsWith("?")) {
        url = url.substring(0, url.length() - 1);
    }
    LOG.logDebug("HTTP GET URL: ", url);
    LOG.logDebug("HTTP GET request: ", request);
    GetMethod gm = null;
    if (url.indexOf('?') > -1 && request != null) {
        gm = new GetMethod(StringTools.concat(500, url, '&', request));
    } else if (request != null && !request.startsWith("http://")) {
        gm = new GetMethod(StringTools.concat(500, url, '?', request));
    } else if (request != null && request.startsWith("http://")) {
        gm = new GetMethod(request);
    } else {
        gm = new GetMethod(url);
    }

    if (header != null) {
        Iterator<String> iter = header.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String) iter.next();
            if (!"content-length".equalsIgnoreCase(key)) {
                gm.addRequestHeader(new Header(key, header.get(key)));
            }

        }
    }

    setHTTPCredentials(gm, user, password);

    HttpClient client = new HttpClient();
    client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
    client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
    WebUtils.enableProxyUsage(client, new URL(url));
    client.executeMethod(gm);
    if (LOG.getLevel() == ILogger.LOG_DEBUG) {
        LOG.logDebug(gm.getResponseBodyAsString());
    }
    if (gm.getStatusCode() != 200) {
        throw new HttpException("status code: " + gm.getStatusCode());
    }
    return gm;
}