private URL getLocationUrl(MutableHttpServletResponse servletResponse)
      throws MalformedURLException {
    String locationHeader = servletResponse.getHeader(CommonHttpHeader.LOCATION.name());
    if (StringUtilities.isNotBlank(locationHeader)) {
      return new URL(locationHeader);
    }

    return null;
  }
    @Test
    public void shouldRemoveRootPathWithoutPort80() throws MalformedURLException {
      // original request http://myhost.com/test
      when(originalRequest.getServerName()).thenReturn("myhost.com");
      when(originalRequest.getServerPort()).thenReturn(80);
      when(originalRequest.getContextPath()).thenReturn("");

      // destination http://otherhost.com/mocks/test
      final String destUri = "http://otherhost.com/mocks/test";
      final String requestedContext = "";
      final String rootPath = "/mocks";

      when(response.getHeader(eq(CommonHttpHeader.LOCATION.name())))
          .thenReturn("http://myhost.com/mocks/test");

      instance.setLocationHeader(originalRequest, response, destUri, requestedContext, rootPath);

      final String expected = "http://myhost.com/test";
      verify(response).setHeader(eq(CommonHttpHeader.LOCATION.name()), eq(expected));
    }
  public void setLocationHeader(
      HttpServletRequest originalRequest,
      MutableHttpServletResponse servletResponse,
      String destinationUri,
      String requestedContext,
      String rootPath)
      throws MalformedURLException {
    final URL locationUrl = getLocationUrl(servletResponse);

    if (locationUrl == null) {
      return;
    }

    final URL requestedHostUrl = extractHostPath(originalRequest);
    final URL proxiedHostUrl = new TargetHostInfo(destinationUri).getProxiedHostUrl();

    final String translatedLocationUrl =
        translateLocationUrl(
            locationUrl, proxiedHostUrl, requestedHostUrl, requestedContext, rootPath);

    if (translatedLocationUrl != null) {
      servletResponse.setHeader(CommonHttpHeader.LOCATION.name(), translatedLocationUrl);
    }
  }