Example usage for org.apache.commons.httpclient URI URI

List of usage examples for org.apache.commons.httpclient URI URI

Introduction

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

Prototype

public URI(URI base, String relative, boolean escaped) throws URIException 

Source Link

Document

Construct a general URI with the given relative URI string.

Usage

From source file:com.google.enterprise.connector.sharepoint.spiimpl.SPDocumentTest.java

protected void setUp() throws Exception {
    super.setUp();
    SharepointClientContext spContext = TestConfiguration.initContext();
    List<SPDocument> allDocs = TestConfiguration.initState(spContext)
            .lookupList(TestConfiguration.Site1_URL, TestConfiguration.Site1_List1_GUID).getCrawlQueue();
    assertTrue(allDocs.size() > 0);// w  w w  . j av a 2 s.  c om
    this.doc = allDocs.get(0);
    assertNotNull(this.doc);
    this.doc.setSharepointClientContext(spContext);
    this.doc.setContentDwnldURL(doc.getUrl());

    // TODO(jlacey): Replace this use of UrlUtil, which generates a
    // warning on Java 7 when not using a bootclasspath. Also, this
    // code is either pointless or it's a smoke test that belongs in a
    // test method.
    String str = UrlUtil.encode(doc.getUrl(), "UTF-8");
    String charset = new GetMethod(str).getParams().getUriCharset();
    URI uri = new URI(doc.getUrl(), true, charset);
}

From source file:de.innovationgate.contentmanager.modules.LinkChecker.java

private int innerCheck(HttpClient client, URI uri, int redirectCounter) throws HttpException, IOException {
    if (redirectCounter >= DEFAULT_MAX_REDIRECTS) {
        throw new IllegalStateException(
                "Max redirects '" + DEFAULT_MAX_REDIRECTS + "' reached. Might be an endless redirect.");
    }// ww  w. ja  v  a 2s .  c om
    GetMethod targetGET = new GetMethod();
    targetGET.setURI(uri);
    targetGET.setFollowRedirects(false);
    int result = client.executeMethod(targetGET);
    if (result == 301 || result == 302 || result == 303 || result == 307) {
        // follow redirect
        Header locationHeader = targetGET.getResponseHeader("location");
        if (locationHeader != null) {
            String redirectLocation = locationHeader.getValue();
            targetGET.releaseConnection();
            return innerCheck(client, new URI(uri, redirectLocation, true), redirectCounter + 1);
        } else {
            targetGET.releaseConnection();
            return 404;
        }
    } else {
        targetGET.releaseConnection();
        return result;
    }
}

From source file:com.silverpeas.openoffice.windows.FileWebDavAccessManager.java

private static URI getURI(String url) throws URIException {
    return new URI(url.replaceAll("%20", " "), false, "UTF-8");
}

From source file:de.fuberlin.wiwiss.marbles.loading.DereferencerBatch.java

/**
 * Loads URL if not yet loaded//from  w w w . ja  v  a2 s  .c  o  m
 * 
 * @param url   The URL to load
 * @param step   The distance from the focal resource
 * @param redirectCount   The number of redirects performed in the course of this individual request
 * @param forceReload   Set this to true if the URL should be loaded even if a valid copy is already in the cache
 * @throws URIException
 */
public void loadURL(URI url, int step, int redirectCount, boolean forceReload) throws URIException {
    if (step > maxSteps || redirectCount > maxRedirects)
        return;

    /* Cut off local names from URI */
    url.setFragment("");

    if (retrievedURLs.contains(
            url)) /* force reload doesn't apply on batch level, as they are short-lived and this could cause infinite loops */
        return;

    if (!forceReload && cacheController.hasURLData(url.toString())) {
        /* Treat as retrieved when reading from cache */
        retrievedURLs.add(url);

        String redirect = cacheController.getCachedRedirect(url.toString());

        /* Process a cached redirect */
        if (redirect != null) {
            URI redirectUrl = new URI(url, redirect, true);
            loadURL(redirectUrl, step, redirectCount + 1, forceReload);
        } else {
            /* Data is already loaded; try to find new links within it */
            try {
                org.openrdf.model.URI sesameUri = new URIImpl(url.toString());
                processLinks(step + 1, sesameUri);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            }
        }
    } else {
        /* No data about this URL; get it */
        ExtendedDereferencingTask task = new ExtendedDereferencingTask(this, url.toString(), step,
                redirectCount, forceReload);
        if (uriQueue.addTask(task)) {
            pendingTasks.add(task);
            retrievedURLs.add(url);
        }
    }
}

From source file:com.mercatis.lighthouse3.commons.commons.HttpRequest.java

/**
 * This method takes an unquoted URL string and quotes it.
 * @param url the url to quote//  w  ww  .  j  a  v  a  2s  .co  m
 * @return the quoted url.
 */
static public String quoteUrl(String unquotedUrl) {
    try {
        return new URI(unquotedUrl, false, "UTF-8").getEscapedURI();
    } catch (URIException ex) {
        throw new HttpException("Invalid URL", ex);
    }
}

From source file:edu.ucsd.xmlrpc.xmlrpc.client.XmlRpcCommonsTransport.java

protected void resetClientForRedirect() throws XmlRpcException {
    //get the location header to find out where to redirect to
    Header locationHeader = method.getResponseHeader("location");
    if (locationHeader == null) {
        throw new XmlRpcException("Invalid redirect: Missing location header");
    }//from w ww  .j a  va2 s .c om
    String location = locationHeader.getValue();

    URI redirectUri = null;
    URI currentUri = null;
    try {
        currentUri = method.getURI();
        String charset = currentUri.getProtocolCharset();
        redirectUri = new URI(location, true, charset);
        method.setURI(redirectUri);
    } catch (URIException ex) {
        throw new XmlRpcException(ex.getMessage(), ex);
    }

    //And finally invalidate the actual authentication scheme
    method.getHostAuthState().invalidate();
}

From source file:com.mercatis.lighthouse3.commons.commons.HttpRequest.java

/**
 * This method takes a quoted base URL and appends another path element (unquoted to it)
 * @param url the quoted base URL//from w  w w . j a  va  2s .co m
 * @param pathElementToAppend unquoted path element to append
 * @return the quoted result URL
 */
static public String appendPathElementToUrl(String quotedBaseUrl, String unquotedPathElementToAppend) {
    try {
        unquotedPathElementToAppend = unquotedPathElementToAppend != null ? unquotedPathElementToAppend : "";
        String quotedPathElement = new URI("http://remove.me/".concat(unquotedPathElementToAppend), false,
                "UTF-8").getEscapedURI().replace("http://remove.me/", "").replace("/", "%2F");
        return quotedBaseUrl + "/" + quotedPathElement;
    } catch (URIException ex) {
        throw new HttpException("Invalid URL", ex);
    }
}

From source file:de.fuberlin.wiwiss.marbles.loading.DereferencerBatch.java

/**
 * Called by {@link DereferencerThread} once data has been retrieved.
 * Handles insertion into cache, processes redirects, and initiates following of known links
 * for the retrieved URL using {@link #processLinks(int, Resource...)} 
 *///from  www. java2 s .  c  o  m
public void dereferenced(DereferencingResult result) {
    ExtendedDereferencingTask task = (ExtendedDereferencingTask) result.getTask();

    /* Add to cache - including header data for redirects */
    cacheController.addURLData(result.getURI(), result.getResultData(), result.getMethod());

    /* Handle known redirect */
    if (null != result.getMethod() && null != result.getMethod()
            .getStatusLine()) /* against NullPointerException with getStatusCode() */ {
        int resultCode = result.getMethod().getStatusCode();
        if (HttpStatusCodes.isRedirect(resultCode)) {
            Header locationHeader;
            if (null != (locationHeader = result.getMethod().getResponseHeader("location"))) {
                try {
                    loadURL(new URI(new URI(result.getURI(), true), locationHeader.getValue(), true),
                            task.getStep(), task.getRedirectStep() + 1, task.isForceReload());
                } catch (URIException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    task.setDone(true);

    /* Wake up parent */
    synchronized (this) {
        notify();
    }

    /* find new links */
    if (result.isSuccess())
        processLinks(task.getStep() + 1, new URIImpl(result.getURI()));
}

From source file:com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.java

private ExtendedGetMethod followRedirects(HttpClient httpClient, int redirectCount,
        ExtendedHttpMethod httpMethod, org.apache.http.HttpResponse httpResponse, HttpContext httpContext)
        throws Exception {
    ExtendedGetMethod getMethod = new ExtendedGetMethod();

    getMethod.getMetrics().getTotalTimer().set(httpMethod.getMetrics().getTotalTimer().getStart(),
            httpMethod.getMetrics().getTotalTimer().getStop());
    getMethod.getMetrics().setHttpMethod(httpMethod.getMethod());
    captureMetrics(httpMethod, httpClient);

    String location = httpResponse.getFirstHeader("Location").getValue();
    URI uri = new URI(new URI(httpMethod.getURI().toString(), true), location, true);
    java.net.URI newUri = new java.net.URI(uri.getScheme(), uri.getUserinfo(), uri.getHost(), uri.getPort(),
            uri.getPath(), uri.getQuery(), uri.getFragment());
    getMethod.setURI(newUri);//from   ww  w . j  ava2s. c om

    org.apache.http.HttpResponse response = HttpClientSupport.execute(getMethod, httpContext);

    if (isRedirectResponse(response.getStatusLine().getStatusCode())) {
        if (redirectCount == 10)
            throw new Exception("Maximum number of Redirects reached [10]");

        try {
            getMethod = followRedirects(httpClient, redirectCount + 1, getMethod, response, httpContext);
        } finally {
            //getMethod.releaseConnection();
        }
    }

    for (Header header : httpMethod.getAllHeaders())
        getMethod.addHeader(header);

    return getMethod;
}

From source file:com.twinsoft.convertigo.engine.servlets.ReverseProxyServlet.java

/**
 * Executes the {@link HttpMethod} passed in and sends the proxy response
 * back to the client via the given {@link HttpServletResponse}
 * //from  ww  w .ja  v a2 s  .  c  o m
 * @param httpMethodProxyRequest
 *            An object representing the proxy request to be made
 * @param httpServletResponse
 *            An object by which we can send the proxied response back to
 *            the client
 * @throws IOException
 *             Can be thrown by the {@link HttpClient}.executeMethod
 * @throws ServletException
 *             Can be thrown to indicate that another error has occurred
 * @throws EngineException
 */
private void doRequest(HttpMethodType httpMethodType, HttpServletRequest httpServletRequest,
        HttpServletResponse httpServletResponse) throws IOException, ServletException {
    try {
        Engine.logEngine.debug("(ReverseProxyServlet) Starting request handling");

        if (Boolean.parseBoolean(EnginePropertiesManager.getProperty(PropertyName.SSL_DEBUG))) {
            System.setProperty("javax.net.debug", "all");
            Engine.logEngine.trace("(ReverseProxyServlet) Enabling SSL debug mode");
        } else {
            System.setProperty("javax.net.debug", "");
            Engine.logEngine.debug("(ReverseProxyServlet) Disabling SSL debug mode");
        }

        String baseUrl;
        String projectName;
        String connectorName;
        String contextName;
        String extraPath;

        {
            String requestURI = httpServletRequest.getRequestURI();
            Engine.logEngine.trace("(ReverseProxyServlet) Requested URI : " + requestURI);
            Matcher m = reg_fields.matcher(requestURI);
            if (m.matches() && m.groupCount() >= 5) {
                baseUrl = m.group(1);
                projectName = m.group(2);
                connectorName = m.group(3);
                contextName = m.group(4);
                extraPath = m.group(5);
            } else {
                throw new MalformedURLException(
                        "The request doesn't contains needed fields : projectName, connectorName and contextName");
            }
        }

        String sessionID = httpServletRequest.getSession().getId();

        Engine.logEngine.debug("(ReverseProxyServlet) baseUrl : " + baseUrl + " ; projectName : " + projectName
                + " ; connectorName : " + connectorName + " ; contextName : " + contextName + " ; extraPath : "
                + extraPath + " ; sessionID : " + sessionID);

        Context context = Engine.theApp.contextManager.get(null, contextName, sessionID, null, projectName,
                connectorName, null);

        Project project = Engine.theApp.databaseObjectsManager.getProjectByName(projectName);
        context.projectName = projectName;
        context.project = project;

        ProxyHttpConnector proxyHttpConnector = (ProxyHttpConnector) project.getConnectorByName(connectorName);
        context.connector = proxyHttpConnector;
        context.connectorName = proxyHttpConnector.getName();

        HostConfiguration hostConfiguration = proxyHttpConnector.hostConfiguration;

        // Proxy configuration
        String proxyServer = Engine.theApp.proxyManager.getProxyServer();
        String proxyUser = Engine.theApp.proxyManager.getProxyUser();
        String proxyPassword = Engine.theApp.proxyManager.getProxyPassword();
        int proxyPort = Engine.theApp.proxyManager.getProxyPort();

        if (!proxyServer.equals("")) {
            hostConfiguration.setProxy(proxyServer, proxyPort);
            Engine.logEngine.debug("(ReverseProxyServlet) Using proxy: " + proxyServer + ":" + proxyPort);
        } else {
            // Remove old proxy configuration
            hostConfiguration.setProxyHost(null);
        }

        String targetHost = proxyHttpConnector.getServer();
        Engine.logEngine.debug("(ReverseProxyServlet) Target host: " + targetHost);
        int targetPort = proxyHttpConnector.getPort();
        Engine.logEngine.debug("(ReverseProxyServlet) Target port: " + targetPort);

        // Configuration SSL
        Engine.logEngine.debug("(ReverseProxyServlet) Https: " + proxyHttpConnector.isHttps());
        CertificateManager certificateManager = proxyHttpConnector.certificateManager;
        boolean trustAllServerCertificates = proxyHttpConnector.isTrustAllServerCertificates();

        if (proxyHttpConnector.isHttps()) {
            Engine.logEngine.debug("(ReverseProxyServlet) Setting up SSL properties");
            certificateManager.collectStoreInformation(context);

            Engine.logEngine.debug(
                    "(ReverseProxyServlet) CertificateManager has changed: " + certificateManager.hasChanged);
            if (certificateManager.hasChanged || (!targetHost.equalsIgnoreCase(hostConfiguration.getHost()))
                    || (hostConfiguration.getPort() != targetPort)) {
                Engine.logEngine
                        .debug("(ReverseProxyServlet) Using MySSLSocketFactory for creating the SSL socket");
                Protocol myhttps = new Protocol("https",
                        MySSLSocketFactory.getSSLSocketFactory(certificateManager.keyStore,
                                certificateManager.keyStorePassword, certificateManager.trustStore,
                                certificateManager.trustStorePassword, trustAllServerCertificates),
                        targetPort);

                hostConfiguration.setHost(targetHost, targetPort, myhttps);
            }

            Engine.logEngine.debug("(ReverseProxyServlet) Updated host configuration for SSL purposes");
        } else {
            hostConfiguration.setHost(targetHost, targetPort);
        }

        HttpMethod httpMethodProxyRequest;

        String targetPath = proxyHttpConnector.getBaseDir() + extraPath;

        // Handle the query string
        if (httpServletRequest.getQueryString() != null) {
            targetPath += "?" + httpServletRequest.getQueryString();
        }
        Engine.logEngine.debug("(ReverseProxyServlet) Target path: " + targetPath);

        Engine.logEngine.debug("(ReverseProxyServlet) Requested method: " + httpMethodType);

        if (httpMethodType == HttpMethodType.GET) {
            // Create a GET request
            httpMethodProxyRequest = new GetMethod();
        } else if (httpMethodType == HttpMethodType.POST) {
            // Create a standard POST request
            httpMethodProxyRequest = new PostMethod();
            ((PostMethod) httpMethodProxyRequest)
                    .setRequestEntity(new InputStreamRequestEntity(httpServletRequest.getInputStream()));
        } else {
            throw new IllegalArgumentException("Unknown HTTP method: " + httpMethodType);
        }

        String charset = httpMethodProxyRequest.getParams().getUriCharset();
        URI targetURI;
        try {
            targetURI = new URI(targetPath, true, charset);
        } catch (URIException e) {
            // Bugfix #1484
            String newTargetPath = "";
            for (String part : targetPath.split("&")) {
                if (!newTargetPath.equals("")) {
                    newTargetPath += "&";
                }
                String[] pair = part.split("=");
                try {
                    newTargetPath += URLDecoder.decode(pair[0], "UTF-8") + "="
                            + (pair.length > 1 ? URLEncoder.encode(URLDecoder.decode(pair[1], "UTF-8"), "UTF-8")
                                    : "");
                } catch (UnsupportedEncodingException ee) {
                    newTargetPath = targetPath;
                }
            }

            targetURI = new URI(newTargetPath, true, charset);
        }
        httpMethodProxyRequest.setURI(targetURI);

        // Tells the method to automatically handle authentication.
        httpMethodProxyRequest.setDoAuthentication(true);

        HttpState httpState = getHttpState(proxyHttpConnector, context);

        String basicUser = proxyHttpConnector.getAuthUser();
        String basicPassword = proxyHttpConnector.getAuthPassword();
        String givenBasicUser = proxyHttpConnector.getGivenAuthUser();
        String givenBasicPassword = proxyHttpConnector.getGivenAuthPassword();

        // Basic authentication configuration
        String realm = null;
        if (!basicUser.equals("") || (basicUser.equals("") && (givenBasicUser != null))) {
            String userName = ((givenBasicUser == null) ? basicUser : givenBasicUser);
            String userPassword = ((givenBasicPassword == null) ? basicPassword : givenBasicPassword);
            httpState.setCredentials(new AuthScope(targetHost, targetPort, realm),
                    new UsernamePasswordCredentials(userName, userPassword));
            Engine.logEngine.debug("(ReverseProxyServlet) Credentials: " + userName + ":******");
        }

        // Setting basic authentication for proxy
        if (!proxyServer.equals("") && !proxyUser.equals("")) {
            httpState.setProxyCredentials(new AuthScope(proxyServer, proxyPort),
                    new UsernamePasswordCredentials(proxyUser, proxyPassword));
            Engine.logEngine.debug("(ReverseProxyServlet) Proxy credentials: " + proxyUser + ":******");
        }

        // Forward the request headers
        setProxyRequestHeaders(httpServletRequest, httpMethodProxyRequest, proxyHttpConnector);

        // Use the CEMS HttpClient
        HttpClient httpClient = Engine.theApp.httpClient;
        httpMethodProxyRequest.setFollowRedirects(false);

        // Execute the request
        int intProxyResponseCode = httpClient.executeMethod(hostConfiguration, httpMethodProxyRequest,
                httpState);

        // Check if the proxy response is a redirect
        // The following code is adapted from
        // org.tigris.noodle.filters.CheckForRedirect
        // Hooray for open source software
        if (intProxyResponseCode >= HttpServletResponse.SC_MULTIPLE_CHOICES /* 300 */
                && intProxyResponseCode < HttpServletResponse.SC_NOT_MODIFIED /* 304 */) {
            String stringStatusCode = Integer.toString(intProxyResponseCode);
            String stringLocation = httpMethodProxyRequest.getResponseHeader(STRING_LOCATION_HEADER).getValue();
            if (stringLocation == null) {
                throw new ServletException("Received status code: " + stringStatusCode + " but no "
                        + STRING_LOCATION_HEADER + " header was found in the response");
            }
            // Modify the redirect to go to this proxy servlet rather that
            // the
            // proxied host
            String redirect = handleRedirect(stringLocation, baseUrl, proxyHttpConnector);
            httpServletResponse.sendRedirect(redirect);
            Engine.logEngine.debug("(ReverseProxyServlet) Send redirect (" + redirect + ")");
            return;
        } else if (intProxyResponseCode == HttpServletResponse.SC_NOT_MODIFIED) {
            // 304 needs special handling. See:
            // http://www.ics.uci.edu/pub/ietf/http/rfc1945.html#Code304
            // We get a 304 whenever passed an 'If-Modified-Since'
            // header and the data on disk has not changed; server
            // responds w/ a 304 saying I'm not going to send the
            // body because the file has not changed.
            httpServletResponse.setIntHeader(STRING_CONTENT_LENGTH_HEADER_NAME, 0);
            httpServletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
            Engine.logEngine.debug("(ReverseProxyServlet) NOT MODIFIED (304)");
            return;
        }

        // Pass the response code back to the client
        httpServletResponse.setStatus(intProxyResponseCode);

        // Pass response headers back to the client
        Engine.logEngine.debug("(ReverseProxyServlet) Response headers back to the client:");
        Header[] headerArrayResponse = httpMethodProxyRequest.getResponseHeaders();
        for (Header header : headerArrayResponse) {
            String headerName = header.getName();
            String headerValue = header.getValue();
            if (!headerName.equalsIgnoreCase("Transfer-Encoding")
                    && !headerName.equalsIgnoreCase("Set-Cookie")) {
                httpServletResponse.setHeader(headerName, headerValue);
                Engine.logEngine.debug("   " + headerName + "=" + headerValue);
            }
        }

        String contentType = null;
        Header[] contentTypeHeaders = httpMethodProxyRequest.getResponseHeaders("Content-Type");
        for (Header contentTypeHeader : contentTypeHeaders) {
            contentType = contentTypeHeader.getValue();
            break;
        }

        String pageCharset = "UTF-8";
        if (contentType != null) {
            int iCharset = contentType.indexOf("charset=");
            if (iCharset != -1) {
                pageCharset = contentType.substring(iCharset + "charset=".length()).trim();
            }
            Engine.logEngine.debug("(ReverseProxyServlet) Using charset: " + pageCharset);
        }

        InputStream siteIn = httpMethodProxyRequest.getResponseBodyAsStream();

        // Handle gzipped content
        Header[] contentEncodingHeaders = httpMethodProxyRequest.getResponseHeaders("Content-Encoding");
        boolean bGZip = false, bDeflate = false;
        for (Header contentEncodingHeader : contentEncodingHeaders) {
            HeaderElement[] els = contentEncodingHeader.getElements();
            for (int j = 0; j < els.length; j++) {
                if ("gzip".equals(els[j].getName())) {
                    Engine.logBeans.debug("(ReverseProxyServlet) Decode GZip stream");
                    siteIn = new GZIPInputStream(siteIn);
                    bGZip = true;
                } else if ("deflate".equals(els[j].getName())) {
                    Engine.logBeans.debug("(ReverseProxyServlet) Decode Deflate stream");
                    siteIn = new InflaterInputStream(siteIn, new Inflater(true));
                    bDeflate = true;
                }
            }
        }

        byte[] bytesDataResult;

        ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);

        // String resourceUrl = projectName + targetPath;

        String t = context.statistics.start(EngineStatistics.APPLY_USER_REQUEST);

        try {
            // Read either from the cache, either from the remote server
            // InputStream is = proxyCacheManager.getResource(resourceUrl);
            // if (is != null) {
            // Engine.logEngine.debug("(ReverseProxyServlet) Getting data from cache");
            // siteIn = is;
            // }
            int c = siteIn.read();
            while (c > -1) {
                baos.write(c);
                c = siteIn.read();
            }
            // if (is != null) is.close();
        } finally {
            context.statistics.stop(t, true);
        }

        bytesDataResult = baos.toByteArray();
        baos.close();
        Engine.logEngine.debug("(ReverseProxyServlet) Data retrieved!");

        // if (isDynamicContent(httpServletRequest.getPathInfo(),
        // proxyHttpConnector.getDynamicContentFiles())) {
        Engine.logEngine.debug("(ReverseProxyServlet) Dynamic content");

        bytesDataResult = handleStringReplacements(baseUrl, contentType, pageCharset, proxyHttpConnector,
                bytesDataResult);

        String billingClassName = context.getConnector().getBillingClassName();
        if (billingClassName != null) {
            try {
                Engine.logContext.debug("Billing class name required: " + billingClassName);
                AbstractBiller biller = (AbstractBiller) Class.forName(billingClassName).newInstance();
                Engine.logContext.debug("Executing the biller");
                biller.insertBilling(context);
            } catch (Throwable e) {
                Engine.logContext.warn("Unable to execute the biller (the billing is thus ignored): ["
                        + e.getClass().getName() + "] " + e.getMessage());
            }
        }
        // }
        // else {
        // Engine.logEngine.debug("(ReverseProxyServlet) Static content: " +
        // contentType);
        //            
        // // Determine if the resource has already been cached or not
        // CacheEntry cacheEntry =
        // proxyCacheManager.getCacheEntry(resourceUrl);
        // if (cacheEntry instanceof FileCacheEntry) {
        // FileCacheEntry fileCacheEntry = (FileCacheEntry) cacheEntry;
        // File file = new File(fileCacheEntry.fileName);
        // if (!file.exists())
        // proxyCacheManager.removeCacheEntry(cacheEntry);
        // cacheEntry = null;
        // }
        // if (cacheEntry == null) {
        // bytesDataResult = handleStringReplacements(contentType,
        // proxyHttpConnector, bytesDataResult);
        //
        // if (intProxyResponseCode == 200) {
        // Engine.logEngine.debug("(ReverseProxyServlet) Resource stored: "
        // + resourceUrl);
        // cacheEntry = proxyCacheManager.storeResponse(resourceUrl,
        // bytesDataResult);
        // cacheEntry.contentLength = bytesDataResult.length;
        // cacheEntry.contentType = contentType;
        // Engine.logEngine.debug("(ReverseProxyServlet) Cache entry: " +
        // cacheEntry);
        // }
        // }
        // }

        // Send the content to the client
        if (Engine.logEngine.isDebugEnabled() && MimeType.Html.is(contentType)) {
            Engine.logEngine.debug("Data proxied:\n" + new String(bytesDataResult, pageCharset));
        }

        if (bGZip || bDeflate) {
            baos = new ByteArrayOutputStream();
            OutputStream compressedOutputStream = bGZip ? new GZIPOutputStream(baos)
                    : new DeflaterOutputStream(baos,
                            new Deflater(Deflater.DEFAULT_COMPRESSION | Deflater.DEFAULT_STRATEGY, true));
            compressedOutputStream.write(bytesDataResult);
            compressedOutputStream.close();
            bytesDataResult = baos.toByteArray();
            baos.close();
        }

        httpServletResponse.setContentLength(bytesDataResult.length);
        OutputStream outputStreamClientResponse = httpServletResponse.getOutputStream();
        outputStreamClientResponse.write(bytesDataResult);

        Engine.logEngine.debug("(ReverseProxyServlet) End of document retransmission");
    } catch (Exception e) {
        Engine.logEngine.error("Error while trying to proxy page", e);
        throw new ServletException("Error while trying to proxy page", e);
    }
}