/** * Returns the request method. * * @return The request method. */ @Override public String getMethod() { return getRequest().getMethod(); }
/** * Returns the response address.<br> * Corresponds to the IP address of the responding server. * * @return The response address. */ @Override public String getServerAddress() { return getRequest().getLocalAddr(); }
/** * Returns the server port. * * @return The server port. */ @Override public int getServerPort() { return getRequest().getServerPort(); }
@Override public String getSslCipherSuite() { return (String) getRequest().getAttribute( "javax.servlet.request.cipher_suite"); }
/** * Indicates if the request was made using a confidential mean.<br> * * @return True if the request was made using a confidential mean.<br> */ @Override public boolean isConfidential() { return getRequest().isSecure(); }
/** * Returns the server domain name. * * @return The server domain name. */ @Override public String getHostDomain() { return getRequest().getServerName(); }
@Override public InputStream getRequestEntityStream(long size) { try { return getRequest().getInputStream(); } catch (IOException e) { return null; } }
@Override public String getClientAddress() { return getRequest().getRemoteAddr(); }
@Override public int getClientPort() { return getRequest().getRemotePort(); }
@Override public List<Certificate> getSslClientCertificates() { final Certificate[] certificateArray = (Certificate[]) getRequest() .getAttribute("javax.servlet.request.X509Certificate"); if (certificateArray != null) { return Arrays.asList(certificateArray); } else { return null; } }
/** * Returns the full request URI. * * @return The full request URI. */ @Override public String getRequestUri() { final String queryString = getRequest().getQueryString(); if ((queryString == null) || (queryString.equals(""))) { return getRequest().getRequestURI(); } else { return getRequest().getRequestURI() + '?' + queryString; } }
@Override public String getVersion() { String result = null; final int index = getRequest().getProtocol().indexOf('/'); if (index != -1) { result = getRequest().getProtocol().substring(index + 1); } return result; }
/** * Returns the server protocol. * * @return The server protocol. */ @Override public Protocol getProtocol() { return Protocol.valueOf(getRequest().getScheme()); }
@Override public Integer getSslKeySize() { Integer keySize = (Integer) getRequest().getAttribute( "javax.servlet.request.key_size"); if (keySize == null) { keySize = super.getSslKeySize(); } return keySize; }
if (request instanceof HttpRequest && ((HttpRequest) request).getHttpCall() instanceof ServletCall) { ServletCall httpCall = (ServletCall) ((HttpRequest) request).getHttpCall(); // fetch the HTTP dispatcher RequestDispatcher dispatcher = httpCall.getRequest().getRequestDispatcher("representation.jsp"); HttpServletRequest proxyReq = new HttpServletRequestWrapper(httpCall.getRequest()); // Overload the http response stream to grab the JSP output into a dedicated proxy buffer // The BufferedServletResponseWrapper is a custom response wrapper that 'hijacks' the // output of the JSP engine and stores it on the side instead of forwarding it to the original // HTTP response. // This is needed to avoid having the JSP engine mess with the actual HTTP stream of the // current request, which must stay under the control of the restlet engine. BufferedServletResponseWrapper proxyResp = new BufferedServletResponseWrapper(httpCall.getResponse()); // Add any objects to be encoded in the http request scope proxyReq.setAttribute("myobjects", someObjects); // Actual JSP encoding dispatcher.include(proxyReq, proxyResp); // Return the content of the proxy buffer Representation rep = new InputRepresentation(proxyResp.toInputStream(),someMediaType);
/** * Returns the Servlet request that was used to generate the given Restlet * request. * * @param request * The Restlet request. * @return The Servlet request or null. */ public static HttpServletRequest getRequest(Request request) { HttpServletRequest result = null; if (request instanceof HttpRequest) { final HttpCall httpCall = ((HttpRequest) request).getHttpCall(); if (httpCall instanceof ServletCall) { result = ((ServletCall) httpCall).getRequest(); } } return result; }
/** * <p> * Retrieves the original servlet request. * </p> * * @param req The Restlet request to handle. * @return httpServletRequest The original HTTP servlet request. */ protected static HttpServletRequest getHttpRequest(Request req) { if (req instanceof HttpRequest) { HttpRequest httpRequest = (HttpRequest) req; HttpCall httpCall = httpRequest.getHttpCall(); if (httpCall instanceof ServletCall) { return ((ServletCall) httpCall).getRequest(); } } return null; }
/** * Converts a low-level Servlet call into a high-level Restlet request. In * addition to the parent HttpServerConverter class, it also copies the * Servlet's request attributes into the Restlet's request attributes map. * * @param servletCall * The low-level Servlet call. * @return A new high-level uniform request. */ @SuppressWarnings("unchecked") public HttpRequest toRequest(ServletCall servletCall) { final HttpRequest result = super.toRequest(servletCall); // Copy all Servlet's request attributes String attributeName; for (final Enumeration<String> namesEnum = servletCall.getRequest() .getAttributeNames(); namesEnum.hasMoreElements();) { attributeName = namesEnum.nextElement(); result.getAttributes().put(attributeName, servletCall.getRequest().getAttribute(attributeName)); } return result; }
/** * Returns the list of request headers. * * @return The list of request headers. */ @Override @SuppressWarnings("unchecked") public Series<Parameter> getRequestHeaders() { if (this.requestHeaders == null) { this.requestHeaders = new Form(); // Copy the headers from the request object String headerName; String headerValue; for (final Enumeration<String> names = getRequest() .getHeaderNames(); names.hasMoreElements();) { headerName = names.nextElement(); for (final Enumeration<String> values = getRequest() .getHeaders(headerName); values.hasMoreElements();) { headerValue = values.nextElement(); this.requestHeaders.add(new Parameter(headerName, headerValue)); } } } return this.requestHeaders; }
/** * Returns the underlying HttpServletRequest from a Restlet Request object. * <p> * Note that this only returns a value in the case where the Restlet * request/call is originating from a servlet. * </p> * @return The HttpServletRequest, or null. */ public static HttpServletRequest getServletRequest( Request request ) { if ( request instanceof HttpRequest ) { HttpRequest httpRequest = (HttpRequest) request; if ( httpRequest.getHttpCall() instanceof ServletCall ) { ServletCall call = (ServletCall) httpRequest.getHttpCall(); return call.getRequest(); } } return null; }