Package ninja

Class WrappedContext

  • All Implemented Interfaces:
    Context

    public class WrappedContext
    extends Object
    implements Context
    A wrapped context. Useful if filters want to modify the context before sending it on.
    Author:
    James Roper
    • Constructor Detail

      • WrappedContext

        public WrappedContext​(Context wrapped)
    • Method Detail

      • getRequestUri

        public String getRequestUri()
        Description copied from interface: Context
        Returns the uri as seen by the server. http://example.com/index would return "/index". This is ambiguous. Please use the new method getRequestPath. It will also take care of any prefixes and contexts set by your servlet container
        Specified by:
        getRequestUri in interface Context
        Returns:
        the uri as seen by the server
      • getRequestParameterString

        public String getRequestParameterString()
        Description copied from interface: Context
        Returns the parameter string that is contained in the request URL after the path.
        Example: For the URL "http://domain.local/?key=private&hash=%93%af%f2%3b", this method will return "key=private&hash=%93%af%f2%3b"
        Specified by:
        getRequestParameterString in interface Context
        Returns:
        The parameter string
      • getHostname

        public String getHostname()
        Description copied from interface: Context
        Returns the hostname as seen by the server. http://example.com/index would return "example.com".
        Specified by:
        getHostname in interface Context
        Returns:
        the host name as seen by the server
      • getScheme

        public String getScheme()
        Description copied from interface: Context
        For instance: http://example.com/index returns "http". https://example.com/index returns "https".
        Specified by:
        getScheme in interface Context
        Returns:
        the scheme of the request as seen by the server (e.g. "http" or "https").
      • getRemoteAddr

        public String getRemoteAddr()
        Description copied from interface: Context
        Returns the Internet Protocol (IP) address of the client or last proxy that sent the request. For HTTP servlets, same as the value of the CGI variable REMOTE_ADDR. To honour the X-Forwarded-For flag make sure you set "ninja.x_forwarded_for_enabled=true" in your application.conf. Default behavior is NOT to take X-Forwarded-For flag into account.
        Specified by:
        getRemoteAddr in interface Context
        Returns:
        a String containing the IP address of the client that sent the request. Takes into account X-Forwarded-For header if configured to do so.
      • getFlashCookie

        public FlashScope getFlashCookie()
        Description copied from interface: Context
        Deprecated => please use getFlashScope()
        Specified by:
        getFlashCookie in interface Context
        Returns:
        FlashScope of this request.
      • getSessionCookie

        public Session getSessionCookie()
        Description copied from interface: Context
        Deprecated => please use getSession();
        Specified by:
        getSessionCookie in interface Context
        Returns:
        the Session of that request / response cycle.
      • getFlashScope

        public FlashScope getFlashScope()
        Description copied from interface: Context
        Returns the flash cookie. Flash cookies only live for one request. Good uses are error messages to display. Almost everything else is bad use of Flash Cookies. A FlashScope is usually not signed. Don't trust the content.
        Specified by:
        getFlashScope in interface Context
        Returns:
        the flash scope of that request.
      • getSession

        public Session getSession()
        Description copied from interface: Context
        Returns the client side session. It is a cookie. Therefore you cannot store a lot of information inside the cookie. This is by intention. If you have the feeling that the session cookie is too small for what you want to achieve thing again. Most likely your design is wrong.
        Specified by:
        getSession in interface Context
        Returns:
        the Session of that request / response cycle.
      • getParameter

        public String getParameter​(String key)
        Description copied from interface: Context
        Get the parameter with the given key from the request. The parameter may either be a query parameter, or in the case of form submissions, may be a form parameter.

        When the parameter is multivalued, returns the first value.

        The parameter is decoded by default.

        Specified by:
        getParameter in interface Context
        Parameters:
        key - The key of the parameter
        Returns:
        The value, or null if no parameter was found.
        See Also:
        Context.getParameterValues(java.lang.String)
      • getParameterValues

        public List<String> getParameterValues​(String name)
        Description copied from interface: Context
        Get the parameter with the given key from the request. The parameter may either be a query parameter, or in the case of form submissions, may be a form parameter.

        The parameter is decoded by default.

        Specified by:
        getParameterValues in interface Context
        Parameters:
        name - The key of the parameter
        Returns:
        The values, possibly an empty list.
      • getParameter

        public String getParameter​(String key,
                                   String defaultValue)
        Description copied from interface: Context
        Same like Context.getParameter(String), but returns given defaultValue instead of null in case parameter cannot be found. The parameter is decoded by default.
        Specified by:
        getParameter in interface Context
        Parameters:
        key - The name of the post or query parameter
        defaultValue - A default value if parameter not found.
        Returns:
        The value of the parameter of the defaultValue if not found.
      • getParameterAsInteger

        public Integer getParameterAsInteger​(String key)
        Description copied from interface: Context
        Same like Context.getParameter(String), but converts the parameter to Integer if found. The parameter is decoded by default.
        Specified by:
        getParameterAsInteger in interface Context
        Parameters:
        key - The name of the post or query parameter
        Returns:
        The value of the parameter or null if not found.
      • getParameterAsInteger

        public Integer getParameterAsInteger​(String key,
                                             Integer defaultValue)
        Description copied from interface: Context
        Same like Context.getParameter(String, String), but converts the parameter to Integer if found. The parameter is decoded by default.
        Specified by:
        getParameterAsInteger in interface Context
        Parameters:
        key - The name of the post or query parameter
        defaultValue - A default value if parameter not found.
        Returns:
        The value of the parameter of the defaultValue if not found.
      • getParameterAsFileItem

        public FileItem getParameterAsFileItem​(String key)
        Description copied from interface: Context
        Same like Context.getParameter(String, String), but converts the parameter to File if found. The parameter is read from the multipart stream, using the FileProvider declared on the route method, class.
        Specified by:
        getParameterAsFileItem in interface Context
        Parameters:
        key - The name of the post or query parameter
        Returns:
        The value of the parameter or null if not found.
      • getParameterAsFileItems

        public List<FileItem> getParameterAsFileItems​(String name)
        Description copied from interface: Context
        Get the files parameter with the given key from the request.
        Specified by:
        getParameterAsFileItems in interface Context
        Parameters:
        name - The key of the parameter
        Returns:
        The values, possibly an empty list.
      • getParameterFileItems

        public Map<String,​List<FileItem>> getParameterFileItems()
        Description copied from interface: Context
        Get all the file parameters from the request
        Specified by:
        getParameterFileItems in interface Context
        Returns:
        The parameters, possibly a null map.
      • getParameterAs

        public <T> T getParameterAs​(String key,
                                    Class<T> clazz)
        Description copied from interface: Context
        Same like Context.getParameter(String), but converts the parameter to Class type if found. The parameter is decoded by default.
        Specified by:
        getParameterAs in interface Context
        Parameters:
        key - The name of the post or query parameter
        Returns:
        The value of the parameter or null if not found.
      • getParameterAs

        public <T> T getParameterAs​(String key,
                                    Class<T> clazz,
                                    T defaultValue)
        Description copied from interface: Context
        Same like Context.getParameter(String, String), but converts the parameter to Class type if found. The parameter is decoded by default.
        Specified by:
        getParameterAs in interface Context
        Parameters:
        key - The name of the post or query parameter
        defaultValue - A default value if parameter not found.
        Returns:
        The value of the parameter of the defaultValue if not found.
      • getPathParameter

        public String getPathParameter​(String key)
        Description copied from interface: Context
        Get the path parameter for the given key. The parameter will be decoded based on the RFCs. Check out http://docs.oracle.com/javase/6/docs/api/java/net/URI.html for more information.
        Specified by:
        getPathParameter in interface Context
        Parameters:
        key - The name of the path parameter in a route. Eg /{myName}/rest/of/url
        Returns:
        The decoded path parameter, or null if no such path parameter was found.
      • getPathParameterAsInteger

        public Integer getPathParameterAsInteger​(String key)
        Description copied from interface: Context
        Get the path parameter for the given key and convert it to Integer. The parameter will be decoded based on the RFCs. Check out http://docs.oracle.com/javase/6/docs/api/java/net/URI.html for more information.
        Specified by:
        getPathParameterAsInteger in interface Context
        Parameters:
        key - the key of the path parameter
        Returns:
        the numeric path parameter, or null of no such path parameter is defined, or if it cannot be parsed to int
      • getParameters

        public Map<String,​String[]> getParameters()
        Description copied from interface: Context
        Get all the parameters from the request
        Specified by:
        getParameters in interface Context
        Returns:
        The parameters
      • getHeader

        public String getHeader​(String name)
        Description copied from interface: Context
        Get the (first) request header with the given name
        Specified by:
        getHeader in interface Context
        Returns:
        The header value or null if not found.
      • getHeaders

        public List<String> getHeaders​(String name)
        Description copied from interface: Context
        Get all the request headers with the given name.
        Specified by:
        getHeaders in interface Context
        Returns:
        the header values. Returns empty list if none are found.
      • getCookieValue

        public String getCookieValue​(String name)
        Description copied from interface: Context
        Get the cookie value from the request, if defined
        Specified by:
        getCookieValue in interface Context
        Parameters:
        name - The name of the cookie
        Returns:
        The cookie value, or null if the cookie was not found
      • isAsync

        public boolean isAsync()
        Specified by:
        isAsync in interface Context
      • handleAsync

        public void handleAsync()
        Description copied from interface: Context
        Indicate that this request is going to be handled asynchronously
        Specified by:
        handleAsync in interface Context
      • returnResultAsync

        public void returnResultAsync​(Result result)
        Description copied from interface: Context
        Indicate that request processing of an async request is complete.
        Specified by:
        returnResultAsync in interface Context
      • asyncRequestComplete

        public void asyncRequestComplete()
        Description copied from interface: Context
        Indicate that processing this request is complete.
        Specified by:
        asyncRequestComplete in interface Context
      • finalizeHeaders

        public ResponseStreams finalizeHeaders​(Result result)
        Description copied from interface: Context
        Finalizing the headers copies all stuff into the headers. It of course also handles Ninja session and Flash information. After finalizing the headers you can access the responseStreams.
        Specified by:
        finalizeHeaders in interface Context
      • finalizeHeadersWithoutFlashAndSessionCookie

        public ResponseStreams finalizeHeadersWithoutFlashAndSessionCookie​(Result result)
        Description copied from interface: Context
        Finalizing the headers copies all stuff into the headers. After finalizing the headers you can access the responseStreams. This method does not set any Ninja session of flash information. Eg. When serving static assets this is the method you may want to use. Otherwise you'd get a race condition with a lot of requests setting scopes and deleting them immediately.
        Specified by:
        finalizeHeadersWithoutFlashAndSessionCookie in interface Context
      • getRoute

        public Route getRoute()
        Description copied from interface: Context
        Get the route for this context
        Specified by:
        getRoute in interface Context
        Returns:
        The route
      • isMultipart

        public boolean isMultipart()
        Description copied from interface: Context
        Check if request is of type multipart. Important when you want to process uploads for instance. Also check out: http://commons.apache.org/fileupload/streaming.html
        Specified by:
        isMultipart in interface Context
        Returns:
        true if request is of type multipart.
      • getFileItemIterator

        public org.apache.commons.fileupload.FileItemIterator getFileItemIterator()
        Description copied from interface: Context
        Gets the FileItemIterator of the input. Can be used to process uploads in a streaming fashion. Check out: http://commons.apache.org/fileupload/streaming.html
        Specified by:
        getFileItemIterator in interface Context
        Returns:
        the FileItemIterator of the request or null if there was an error.
      • getRequestPath

        public String getRequestPath()
        Description copied from interface: Context
        Returns the path that Ninja should act upon. For instance in servlets you could have soemthing like a context prefix. /myContext/app If your route only defines /app it will work as the requestpath will return only "/app". A context path is not returned. It does NOT decode any parts of the url. Interesting reads: - http://www.lunatech-research.com/archives/2009/02/03/ what-every-web-developer-must-know-about-url-encoding - http://stackoverflow .com/questions/966077/java-reading-undecoded-url-from-servlet
        Specified by:
        getRequestPath in interface Context
        Returns:
        The the path as seen by the server. Does exclude any container set context prefixes. Not decoded.
      • getValidation

        public Validation getValidation()
        Description copied from interface: Context
        Get the validation context
        Specified by:
        getValidation in interface Context
        Returns:
        The validation context
      • getPathParameterEncoded

        public String getPathParameterEncoded​(String key)
        Description copied from interface: Context
        Get the path parameter for the given key. Returns the raw path part. That means you can get stuff like: blue%2Fred%3Fand+green
        Specified by:
        getPathParameterEncoded in interface Context
        Parameters:
        key - The name of the path parameter in a route. Eg /{myName}/rest/of/url
        Returns:
        The encoded (!) path parameter, or null if no such path parameter was found.
      • getAcceptContentType

        public String getAcceptContentType()
        Description copied from interface: Context
        Get the content type that is acceptable for the client. (in this order : {@see Result.TEXT_HTML} > {@see Result.APPLICATION_XML} > {@see Result.APPLICATION_JSON} > {@see Result.TEXT_PLAIN} > {@see Result.APPLICATION_OCTET_STREAM} level- or quality-parameter are ignored with this method.) E.g. Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,text/html;level=2;q=0.4 The Accept request-header field can be used to specify certain media types which are acceptable for the response. Accept headers can be used to indicate that the request is specifically limited to a small set of desired types, as in the case of a request for an in-line image.
        Specified by:
        getAcceptContentType in interface Context
        Returns:
        one of the {@see Result} mime types that is acceptable for the client or {@see Result.TEXT_HTML} if not set
        See Also:
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
      • getAcceptEncoding

        public String getAcceptEncoding()
        Description copied from interface: Context
        Get the encoding that is acceptable for the client. E.g. Accept-Encoding: compress, gzip The Accept-Encoding request-header field is similar to Accept, but restricts the content-codings that are acceptable in the response.
        Specified by:
        getAcceptEncoding in interface Context
        Returns:
        the encoding that is acceptable for the client
        See Also:
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
      • getAcceptLanguage

        public String getAcceptLanguage()
        Description copied from interface: Context
        Get the language that is acceptable for the client. E.g. Accept-Language: da, en-gb;q=0.8, en;q=0.7 The Accept-Language request-header field is similar to Accept, but restricts the set of natural languages that are preferred as a response to the request.
        Specified by:
        getAcceptLanguage in interface Context
        Returns:
        the language that is acceptable for the client
        See Also:
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
      • getAcceptCharset

        public String getAcceptCharset()
        Description copied from interface: Context
        Get the charset that is acceptable for the client. E.g. Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 The Accept-Charset request-header field can be used to indicate what character sets are acceptable for the response. This field allows clients capable of understanding more comprehensive or special- purpose character sets to signal that capability to a server which is capable of representing documents in those character sets.
        Specified by:
        getAcceptCharset in interface Context
        Returns:
        the charset that is acceptable for the client
        See Also:
        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
      • getCookie

        public Cookie getCookie​(String cookieName)
        Description copied from interface: Context
        Get cookie from context.
        Specified by:
        getCookie in interface Context
        Parameters:
        cookieName - Name of the cookie to retrieve
        Returns:
        the cookie with that name or null.
      • hasCookie

        public boolean hasCookie​(String cookieName)
        Description copied from interface: Context
        Checks whether the context contains a given cookie.
        Specified by:
        hasCookie in interface Context
        Parameters:
        cookieName - Name of the cookie to check for
        Returns:
        true if the context has a cookie with that name.
      • getCookies

        public List<Cookie> getCookies()
        Description copied from interface: Context
        Get all cookies from the context.
        Specified by:
        getCookies in interface Context
        Returns:
        the cookie with that name or null.
      • getMethod

        public String getMethod()
        Description copied from interface: Context
        Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. Same as the value of the CGI variable REQUEST_METHOD.
        Specified by:
        getMethod in interface Context
        Returns:
        a String specifying the name of the method with which this request was made (eg GET, POST, PUT...)
      • getAttribute

        public <T> T getAttribute​(String name,
                                  Class<T> clazz)
        Description copied from interface: Context
        Gets an attribute value previously set by Context.setAttribute(java.lang.String, java.lang.Object).

        This is a convenience method, equivalent to:

        
             return clazz.cast(getAttribute(name));
         

        Attributes are shared state for the duration of the request; useful to pass values between filters and controllers.

        Specified by:
        getAttribute in interface Context
        Returns:
        the attribute value, or null if the attribute does not exist
      • getAttributes

        public Map<String,​Object> getAttributes()
        Description copied from interface: Context
        Get all the attributes from the request
        Specified by:
        getAttributes in interface Context
        Returns:
        The attributes
      • getContextPath

        public String getContextPath()
        Description copied from interface: Context
        Get the context path on which the application is running That means: - when running on root the context path is empty - when running on context there is NEVER a trailing slash We conform to the following rules: Returns the portion of the request URI that indicates the context of the request. The context path always comes first in a request URI. The path starts with a "/" character but does not end with a "/" character. For servlets in the default (root) context, this method returns "". The container does not decode this string. As outlined by: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getContextPath()
        Specified by:
        getContextPath in interface Context
        Returns:
        the context-path with a leading "/" or "" if running on root
      • isRequestJson

        public boolean isRequestJson()
        Description copied from interface: Context
        Check to see if the request content type is JSON.

        Checks to see if the request content type has been set application/json

        Specified by:
        isRequestJson in interface Context
        Returns:
        true if the content type is to set application/json
      • isRequestXml

        public boolean isRequestXml()
        Description copied from interface: Context
        Check to see if the request content type is XML.

        Checks to see if the request content type has been set application/xml

        Specified by:
        isRequestXml in interface Context
        Returns:
        true if the content type is to set application/xml
      • addCookie

        public void addCookie​(Cookie cookie)
        Description copied from interface: Context
        Adds a cookie to the response
        Specified by:
        addCookie in interface Context
        Parameters:
        cookie - Ninja cookie
      • unsetCookie

        public void unsetCookie​(Cookie cookie)
        Description copied from interface: Context
        Removes a cookie from the response
        Specified by:
        unsetCookie in interface Context
        Parameters:
        cookie - Ninja Cookie
      • cleanup

        public void cleanup()
        Description copied from interface: Context
        Cleanup context
        Specified by:
        cleanup in interface Context