Class HttpRequestContext

  • Direct Known Subclasses:
    KawaHttpHandler.Context, KawaServlet.Context

    public abstract class HttpRequestContext
    extends java.lang.Object
    A representation of an http request as it is being handled. It abstracts over different http server's API - specially, there are are concrete implementations on top of JDK6's com.sun.net.httpserver, javax.servlet.http, and CGI (on top of servlets).
    • Field Detail

      • statusCode

        public int statusCode
      • statusReasonPhrase

        public java.lang.String statusReasonPhrase
      • importServletDefinitions

        public static int importServletDefinitions
        This is a bit of a kludge, to import servlet functions into Scheme. (The kludge is that we really shouldn't be using a static.) If importServletDefinitions == 1, then we're running in (or compiling for) a web server context; if it is 2 we specifically support servlets.
    • Constructor Detail

      • HttpRequestContext

        public HttpRequestContext()
    • Method Detail

      • getInstance

        public static HttpRequestContext getInstance​(java.lang.String command)
      • getRequestStream

        public abstract java.io.InputStream getRequestStream()
      • getRequestPort

        public gnu.kawa.io.InPort getRequestPort()
      • getRequestBodyChars

        public java.lang.String getRequestBodyChars()
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • getResponseStream

        public abstract java.io.OutputStream getResponseStream()
        Return an OutputStream for the result body. Multiple calls will return the same OutputStream.
      • getConsumer

        public ServletPrinter getConsumer()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • reset

        public abstract boolean reset​(boolean headersAlso)
        Try to reset (delete) any response generated so far.
        Parameters:
        headersAlso - if response headers should also be reset.
        Returns:
        true on success, false if it's too late.
      • getRequestParameter

        public java.lang.String getRequestParameter​(java.lang.String name)
      • getRequestParameters

        public abstract java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getRequestParameters()
      • getRequestURI

        public abstract java.net.URI getRequestURI()
      • getContextPath

        public abstract java.lang.String getContextPath()
        Returns the context path, relative to the server root. This is an initial substring of the getRequestPath(). Like ServletContext#getContextPath, but ends with a '/'. The string getRequestURI() is the same as the concatenation of getContextPath(), getScriptPath(), and getLocalPath().
      • getScriptPath

        public java.lang.String getScriptPath()
        Returns the path of the script, relative to the context. Like ServletRequestt#getServletPath, but ends with a '/', and does not start with one. (The reason for this is to produce URIs that work better with operations like resolve-uri.)
      • getLocalPath

        public java.lang.String getLocalPath()
        Returns the remainder of the request path, relative to the script.
      • setScriptAndLocalPath

        public void setScriptAndLocalPath​(java.lang.String scriptPath,
                                          java.lang.String localPath)
      • getPathTranslated

        public abstract java.lang.String getPathTranslated()
      • getRequestPath

        public java.lang.String getRequestPath()
      • getRequestScheme

        public java.lang.String getRequestScheme()
      • getLocalSocketAddress

        public java.net.InetSocketAddress getLocalSocketAddress()
      • getLocalIPAddress

        public java.lang.String getLocalIPAddress()
      • getLocalHost

        public java.net.InetAddress getLocalHost()
      • getLocalPort

        public abstract int getLocalPort()
      • getRemoteSocketAddress

        public java.net.InetSocketAddress getRemoteSocketAddress()
      • getRemoteHost

        public abstract java.net.InetAddress getRemoteHost()
      • getRemoteIPAddress

        public abstract java.lang.String getRemoteIPAddress()
      • getRemotePort

        public abstract int getRemotePort()
      • getRequestURLBuffer

        public java.lang.StringBuffer getRequestURLBuffer()
      • getQueryString

        public abstract java.lang.String getQueryString()
      • getRequestMethod

        public abstract java.lang.String getRequestMethod()
      • getRequestHeader

        public abstract java.lang.String getRequestHeader​(java.lang.String name)
      • getRequestHeaders

        public abstract java.util.List<java.lang.String> getRequestHeaders​(java.lang.String name)
      • getRequestHeaders

        public abstract java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getRequestHeaders()
      • setResponseHeader

        public abstract void setResponseHeader​(java.lang.String name,
                                               java.lang.String value)
      • setContentType

        public void setContentType​(java.lang.String type)
      • normalizeToContext

        protected java.lang.String normalizeToContext​(java.lang.String path)
      • getResourceURL

        public abstract java.net.URL getResourceURL​(java.lang.String path)
        Returns the URL of a resource. The resource is relative to the script path, if the path is relative; otherwise (if it starts with a '/' it is relative to the context path.
      • getAttribute

        public abstract java.lang.Object getAttribute​(java.lang.String name)
        Get attribute from the server context.
      • setAttribute

        public abstract void setAttribute​(java.lang.String name,
                                          java.lang.Object value)
        Set attribute in the server context.
      • sendResponseHeaders

        public abstract void sendResponseHeaders​(int reasonCode,
                                                 java.lang.String reasonPhrase,
                                                 long responseLength)
                                          throws java.io.IOException
        Send headers.
        Parameters:
        reasonCode - response code - e.g. 200 for OK.
        reasonPhrase - response string - e.g. "OK" or "Not Found".
        responseLength - response length in bytes, or -1 (unspecified). Note this is different from HttpExchange.sendResponseHeaders. This method must be called before getResponseStream. Implementations should set statusCode to STATUS_SENT.
        Throws:
        java.io.IOException
      • sendNotFound

        public void sendNotFound​(java.lang.String path)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • log

        public abstract void log​(java.lang.String message)
      • log

        public abstract void log​(java.lang.String message,
                                 java.lang.Throwable ex)
      • handleStaticFile

        public static void handleStaticFile​(HttpRequestContext hctx,
                                            gnu.kawa.io.Path absPath)
                                     throws java.io.IOException
        Throws:
        java.io.IOException