@Override
 public String getContextPath() {
   if (SecurityUtil.isPackageProtectionEnabled()) {
     return (String) doPrivileged("getContextPath", null);
   } else {
     return context.getContextPath();
   }
 }
 @Override
 public void sendRedirect(final String location) throws IOException {
   setStatus(302);
   String realPath;
   if (location.startsWith("/")) {
     realPath = location;
   } else {
     String current = exchange.getExchange().getRelativePath();
     int lastSlash = current.lastIndexOf("/");
     if (lastSlash != -1) {
       current = current.substring(0, lastSlash + 1);
     }
     realPath =
         servletContext.getContextPath() + CanonicalPathUtils.canonicalize(current + location);
   }
   String host = exchange.getExchange().getRequestHeaders().getFirst(Headers.HOST);
   if (host == null) {
     host = exchange.getExchange().getDestinationAddress().getAddress().getHostAddress();
   }
   String loc = exchange.getExchange().getRequestScheme() + "://" + host + realPath;
   exchange.getExchange().getResponseHeaders().put(Headers.LOCATION, loc);
 }