Class RequestImpl

java.lang.Object
jakarta.servlet.ServletRequestWrapper
jakarta.servlet.http.HttpServletRequestWrapper
org.kohsuke.stapler.RequestImpl
All Implemented Interfaces:
jakarta.servlet.http.HttpServletRequest, jakarta.servlet.ServletRequest, StaplerRequest2

public class RequestImpl extends jakarta.servlet.http.HttpServletRequestWrapper implements StaplerRequest2
StaplerRequest2 implementation.
Author:
Kohsuke Kawaguchi
  • Field Details

    • tokens

      public final TokenList tokens
      Tokenized URLs and consumed tokens. This object is modified by Stapler as we parse through the URL.
    • ancestors

      public final List<org.kohsuke.stapler.AncestorImpl> ancestors
      Ancestor nodes traversed so far. This object is modified by Stapler as we parse through the URL.
    • stapler

      public final Stapler stapler
  • Constructor Details

  • Method Details

    • isJavaScriptProxyCall

      public boolean isJavaScriptProxyCall()
      Description copied from interface: StaplerRequest2
      Returns true if this request represents a server method call to a JavaScript proxy object.
      Specified by:
      isJavaScriptProxyCall in interface StaplerRequest2
    • getBoundObjectTable

      public BoundObjectTable getBoundObjectTable()
      Description copied from interface: StaplerRequest2
      Short cut for obtaining BoundObjectTable associated with this webapp.
      Specified by:
      getBoundObjectTable in interface StaplerRequest2
    • createJavaScriptProxy

      public String createJavaScriptProxy(Object toBeExported)
      Description copied from interface: StaplerRequest2
      Exports the given Java object as a JavaScript proxy and returns a JavaScript expression to create a proxy on the client side. Short cut for getBoundObjectTable().bind(toBeExported).getProxyScript()
      Specified by:
      createJavaScriptProxy in interface StaplerRequest2
    • createJavaScriptProxyParameters

      public StaplerRequest2.RenderOnDemandParameters createJavaScriptProxyParameters(Object toBeExported)
      Description copied from interface: StaplerRequest2
      Exports the given Java object as a JavaScript proxy and returns the parameters needed to call makeStaplerProxy.
      Specified by:
      createJavaScriptProxyParameters in interface StaplerRequest2
    • getStapler

      public Stapler getStapler()
      Description copied from interface: StaplerRequest2
      Gets the Stapler instance that this belongs to.
      Specified by:
      getStapler in interface StaplerRequest2
    • getWebApp

      public WebApp getWebApp()
      Description copied from interface: StaplerRequest2
      Short for getStapler().getWebApp()
      Specified by:
      getWebApp in interface StaplerRequest2
    • getRestOfPath

      public String getRestOfPath()
      Description copied from interface: StaplerRequest2
      Returns the additional URL portion that wasn't used by the stapler, excluding the query string.

      For example, if the requested URL is "foo/bar/zot/abc?def=ghi" and "foo/bar" portion matched bar.jsp, this method returns "/zot/abc".

      If this method is invoked from getters or StaplerProxy.getTarget() during the object traversal, this method returns the path portion that is not yet processed.

      Specified by:
      getRestOfPath in interface StaplerRequest2
      Returns:
      can be empty string, but never null.
    • getOriginalRestOfPath

      public String getOriginalRestOfPath()
      Description copied from interface: StaplerRequest2
      Returns the same thing as StaplerRequest2.getRestOfPath() but in the pre-decoded form, so all "%HH"s as present in the request URL is intact.
      Specified by:
      getOriginalRestOfPath in interface StaplerRequest2
    • getServletContext

      public jakarta.servlet.ServletContext getServletContext()
      Description copied from interface: StaplerRequest2
      Returns the ServletContext object given to the stapler dispatcher servlet.
      Specified by:
      getServletContext in interface jakarta.servlet.ServletRequest
      Specified by:
      getServletContext in interface StaplerRequest2
      Overrides:
      getServletContext in class jakarta.servlet.ServletRequestWrapper
    • getParameter

      public String getParameter(String name)
      Specified by:
      getParameter in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameter in class jakarta.servlet.ServletRequestWrapper
    • getParameterMap

      public Map getParameterMap()
      Specified by:
      getParameterMap in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterMap in class jakarta.servlet.ServletRequestWrapper
    • getParameterNames

      public Enumeration getParameterNames()
      Specified by:
      getParameterNames in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterNames in class jakarta.servlet.ServletRequestWrapper
    • getParameterValues

      public String[] getParameterValues(String name)
      Specified by:
      getParameterValues in interface jakarta.servlet.ServletRequest
      Overrides:
      getParameterValues in class jakarta.servlet.ServletRequestWrapper
    • getRequestURIWithQueryString

      public String getRequestURIWithQueryString()
      Description copied from interface: StaplerRequest2
      HttpServletRequest.getRequestURI() plus additional query string part, if it exists.
      Specified by:
      getRequestURIWithQueryString in interface StaplerRequest2
    • getRequestURLWithQueryString

      public StringBuffer getRequestURLWithQueryString()
      Description copied from interface: StaplerRequest2
      HttpServletRequest.getRequestURL() plus additional query string part, if it exists.
      Specified by:
      getRequestURLWithQueryString in interface StaplerRequest2
    • getView

      public jakarta.servlet.RequestDispatcher getView(Object it, String viewName) throws IOException
      Description copied from interface: StaplerRequest2
      Gets the RequestDispatcher that represents a specific view for the given object. This support both JSP and Jelly.
      Specified by:
      getView in interface StaplerRequest2
      viewName - If this name is relative name like "foo.jsp" or "bar/zot.jelly", then the corresponding "side file" is searched by this name.

      For Jelly, this also accepts absolute path name that starts with '/', such as "/foo/bar/zot.jelly". In this case, it.getClass().getClassLoader() is searched for this script.

      Returns:
      null if neither JSP nor Jelly is not found by the given name.
      Throws:
      IOException
    • getView

      public jakarta.servlet.RequestDispatcher getView(Class clazz, String viewName) throws IOException
      Description copied from interface: StaplerRequest2
      Convenience method to call StaplerRequest2.getView(Klass, String) with Class.
      Specified by:
      getView in interface StaplerRequest2
      Throws:
      IOException
    • getView

      public jakarta.servlet.RequestDispatcher getView(Klass<?> clazz, String viewName) throws IOException
      Description copied from interface: StaplerRequest2
      Gets the RequestDispatcher that represents a specific view for the given class.

      Unlike StaplerRequest2.getView(Object, String), calling this request dispatcher doesn't set the "it" variable, so getView(it.getClass(),viewName) and getView(it,viewName) aren't the same thing.

      Specified by:
      getView in interface StaplerRequest2
      Throws:
      IOException
    • getView

      public jakarta.servlet.RequestDispatcher getView(Klass<?> clazz, Object it, String viewName) throws IOException
      Throws:
      IOException
    • getRootPath

      public String getRootPath()
      Description copied from interface: StaplerRequest2
      Gets the part of the request URL from protocol up to the context path. So typically it's something like http://foobar:8080/something
      Specified by:
      getRootPath in interface StaplerRequest2
    • getReferer

      public String getReferer()
      Description copied from interface: StaplerRequest2
      Gets the referer header (like "http://foobar.com/zot") or null. This is just a convenience method.
      Specified by:
      getReferer in interface StaplerRequest2
    • getAncestors

      public List<Ancestor> getAncestors()
      Description copied from interface: StaplerRequest2
      Returns a list of ancestor objects that lead to the "it" object. The returned list contains Ancestor objects sorted in the order from root to the "it" object.

      For example, if the URL was "foo/bar/zot" and the "it" object was determined as root.getFoo().getBar("zot"), then this list will contain the following 3 objects in this order:

      1. the root object
      2. root.getFoo() object
      3. root.getFoo().getBar("zot") object (the "it" object)

      Specified by:
      getAncestors in interface StaplerRequest2
      Returns:
      list of Ancestors. Can be empty, but always non-null.
    • findAncestor

      public Ancestor findAncestor(Class type)
      Description copied from interface: StaplerRequest2
      Finds the nearest ancestor that has the object of the given type, or null if not found.
      Specified by:
      findAncestor in interface StaplerRequest2
    • findAncestorObject

      public <T> T findAncestorObject(Class<T> type)
      Description copied from interface: StaplerRequest2
      Short for findAncestor(type).getObject(), with proper handling for null de-reference. This version is also type safe.
      Specified by:
      findAncestorObject in interface StaplerRequest2
    • findAncestor

      public Ancestor findAncestor(Object anc)
      Description copied from interface: StaplerRequest2
      Finds the nearest ancestor whose Ancestor.getObject() matches the given object.
      Specified by:
      findAncestor in interface StaplerRequest2
    • hasParameter

      public boolean hasParameter(String name)
      Description copied from interface: StaplerRequest2
      Short for getParameter(name)!=null
      Specified by:
      hasParameter in interface StaplerRequest2
    • getOriginalRequestURI

      public String getOriginalRequestURI()
      Description copied from interface: StaplerRequest2
      Gets the request URI of the original request, so that you can access the value even from JSP.
      Specified by:
      getOriginalRequestURI in interface StaplerRequest2
    • checkIfModified

      public boolean checkIfModified(long lastModified, StaplerResponse2 rsp)
      Description copied from interface: StaplerRequest2
      Checks "If-Modified-Since" header and returns false if the resource needs to be served.

      This method can behave in three ways.

      1. If timestampOfResource is 0 or negative, this method just returns false.
      2. If "If-Modified-Since" header is sent and if it's bigger than timestampOfResource, then this method sets HttpServletResponse.SC_NOT_MODIFIED as the response code and returns true.
      3. Otherwise, "Last-Modified" header is added with timestampOfResource value, and this method returns false.

      This method sends out the "Expires" header to force browser to re-validate all the time.

      Specified by:
      checkIfModified in interface StaplerRequest2
      Parameters:
      lastModified - The time stamp of the resource.
      rsp - This object is updated accordingly to simplify processing.
      Returns:
      false to indicate that the caller has to serve the actual resource. true to indicate that the caller should just quit processing right there (and send back HttpServletResponse.SC_NOT_MODIFIED.
    • checkIfModified

      public boolean checkIfModified(long lastModified, StaplerResponse2 rsp, long expiration)
      Specified by:
      checkIfModified in interface StaplerRequest2
      expiration - The number of milliseconds until the resource will "expire". Until it expires the browser will be allowed to cache it and serve it without checking back with the server. After it expires, the client will send conditional GET to check if the resource is actually modified or not. If 0, it will immediately expire.
      See Also:
    • checkIfModified

      public boolean checkIfModified(Date timestampOfResource, StaplerResponse2 rsp)
      Specified by:
      checkIfModified in interface StaplerRequest2
      See Also:
    • checkIfModified

      public boolean checkIfModified(Calendar timestampOfResource, StaplerResponse2 rsp)
      Specified by:
      checkIfModified in interface StaplerRequest2
      See Also:
    • getBindInterceptor

      public BindInterceptor getBindInterceptor()
      Description copied from interface: StaplerRequest2
      Gets the BindInterceptor set for this request.
      Specified by:
      getBindInterceptor in interface StaplerRequest2
      See Also:
    • setBindListener

      public BindInterceptor setBindListener(BindInterceptor bindListener)
      Specified by:
      setBindListener in interface StaplerRequest2
    • setBindInterceptpr

      public BindInterceptor setBindInterceptpr(BindInterceptor bindListener)
      Specified by:
      setBindInterceptpr in interface StaplerRequest2
    • setBindInterceptor

      public BindInterceptor setBindInterceptor(BindInterceptor bindListener)
      Specified by:
      setBindInterceptor in interface StaplerRequest2
    • bindParameters

      public void bindParameters(Object bean)
      Description copied from interface: StaplerRequest2
      Binds form parameters to a bean by using introspection. For example, if there's a parameter called 'foo' that has value 'abc', then bean.setFoo('abc') will be invoked. This will be repeated for all parameters. Parameters that do not have corresponding setters will be simply ignored.

      Values are converted into the right type. See ConvertUtils.convert(String, Class).

      Specified by:
      bindParameters in interface StaplerRequest2
      Parameters:
      bean - The object which will be filled out.
      See Also:
      • BeanUtils.setProperty(Object, String, Object)
    • bindParameters

      public void bindParameters(Object bean, String prefix)
      Description copied from interface: StaplerRequest2
      Binds form parameters to a bean by using introspection. This method works like StaplerRequest2.bindParameters(Object), but it performs a pre-processing on property names. Namely, only property names that start with the given prefix will be used for binding, and only the portion of the property name after the prefix is used. So for example, if the prefix is "foo.", then property name "foo.bar" with value "zot" will invoke bean.setBar("zot").
      Specified by:
      bindParameters in interface StaplerRequest2
    • bindParametersToList

      public <T> List<T> bindParametersToList(Class<T> type, String prefix)
      Description copied from interface: StaplerRequest2
      Binds collection form parameters to beans by using introspection or constructor parameters injection.

      This method works like StaplerRequest2.bindParameters(Object,String) and StaplerRequest2.bindParameters(Class, String), but it assumes that form parameters have multiple-values, and use individual values to fill in multiple beans.

      For example, if getParameterValues("foo")=={"abc","def"} and getParameterValues("bar")=={"5","3"}, then this method will return two objects (the first with "abc" and "5", the second with "def" and "3".)

      Specified by:
      bindParametersToList in interface StaplerRequest2
      Parameters:
      type - Type of the bean to be created. This class must have the default no-arg constructor.
      prefix - See StaplerRequest2.bindParameters(Object, String) for details.
      Returns:
      Can be empty but never null.
    • bindParameters

      public <T> T bindParameters(Class<T> type, String prefix)
      Description copied from interface: StaplerRequest2
      Instantiates a new object by injecting constructor parameters from the form parameters.

      The given class must have a constructor annotated with '@stapler-constructor', and must be processed by the maven-stapler-plugin, so that the parameter names of the constructor is available at runtime.

      The prefix is used to control the form parameter name. For example, if the prefix is "foo." and if the constructor is define as Foo(String a, String b), then the constructor will be invoked as new Foo(getParameter("foo.a"),getParameter("foo.b")).

      Specified by:
      bindParameters in interface StaplerRequest2
    • bindParameters

      public <T> T bindParameters(Class<T> type, String prefix, int index)
      Description copied from interface: StaplerRequest2
      Works like StaplerRequest2.bindParameters(Class, String) but uses n-th value of all the parameters.

      This is useful for creating multiple instances from repeated form fields.

      Specified by:
      bindParameters in interface StaplerRequest2
    • bindJSON

      public <T> T bindJSON(Class<T> type, net.sf.json.JSONObject src)
      Description copied from interface: StaplerRequest2
      Data-bind from a JSONObject to the given target type, by using introspection or constructor parameters injection.

      For example, if you have a constructor that looks like the following:

       class Foo {
         @DataBoundConstructor
         public Foo(Integer x, String y, boolean z, Bar bar) { ... }
       }
      
       class Bar {
         @DataBoundConstructor
         public Bar(int x, int y) {}
       }
       
      ... and if JSONObject looks like
      { y:"text", z:true, bar:{x:1,y:2}}
      then, this method returns
      new Foo(null,"text",true,new Bar(1,2))

      Sub-typing: In the above example, a new instance of Bar was created, but you can also create a subtype of Bar by having the '$class' property in JSON like this:

       class BarEx extends Bar {
         @DataBoundConstructor
         public BarEx(int a, int b, int c) {}
       }
      
       { y:"text", z:true, bar: { $class:"p.k.g.BarEx", a:1, b:2, c:3 } }
       

      The type that shows up in the constructor (Bar in this case) can be an interface or an abstract class.

      Specified by:
      bindJSON in interface StaplerRequest2
    • bindJSON

      public Object bindJSON(Type type, Class erasure, Object json)
      Description copied from interface: StaplerRequest2
      Data-bind from one of the JSON object types (JSONObject, JSONArray, String, Integer, and so on) to the expected type given as an argument.
      Specified by:
      bindJSON in interface StaplerRequest2
      Parameters:
      type - The generic type of the 'erasure' parameter.
      erasure - The expected type to convert the JSON argument to.
      json - One of the JSON value type.
    • bindJSON

      public void bindJSON(Object bean, net.sf.json.JSONObject src)
      Description copied from interface: StaplerRequest2
      Data-binds from JSONObject to the given object.

      This method is bit like StaplerRequest2.bindJSON(Class, JSONObject), except that this method populates an existing object, instead of creating a new instance.

      This method is also bit like StaplerRequest2.bindParameters(Object, String), in that it populates an existing object from a form submission, except that this method obtains data from JSONObject thus more structured, whereas StaplerRequest2.bindParameters(Object, String) uses the map structure of the form submission.

      Specified by:
      bindJSON in interface StaplerRequest2
    • bindJSONToList

      public <T> List<T> bindJSONToList(Class<T> type, Object src)
      Description copied from interface: StaplerRequest2
      Data-bind from either JSONObject or JSONArray to a list, by using StaplerRequest2.bindJSON(Class, JSONObject) as the lower-level mechanism.

      If the source is JSONObject, the returned list will contain a single item. If it is JSONArray, each item will be bound. If it is null, then the list will be empty.

      Specified by:
      bindJSONToList in interface StaplerRequest2
    • getSubmittedForm

      public net.sf.json.JSONObject getSubmittedForm() throws jakarta.servlet.ServletException
      Description copied from interface: StaplerRequest2
      Gets the content of the structured form submission.
      Specified by:
      getSubmittedForm in interface StaplerRequest2
      Throws:
      jakarta.servlet.ServletException
      See Also:
    • getFileItem2

      public org.apache.commons.fileupload2.core.FileItem getFileItem2(String name) throws jakarta.servlet.ServletException, IOException
      Description copied from interface: StaplerRequest2
      Obtains a commons-fileupload2 object that represents an uploaded file.
      Specified by:
      getFileItem2 in interface StaplerRequest2
      Returns:
      null if a file of the given form field name doesn't exist. This includes the case where the name corresponds to a simple form field (like textbox, checkbox, etc.)
      Throws:
      jakarta.servlet.ServletException
      IOException
    • getFileItem

      @Deprecated public FileItem getFileItem(String name) throws jakarta.servlet.ServletException, IOException
      Deprecated.
      Description copied from interface: StaplerRequest2
      Obtains a commons-fileupload object that represents an uploaded file.
      Specified by:
      getFileItem in interface StaplerRequest2
      Returns:
      null if a file of the given form field name doesn't exist. This includes the case where the name corresponds to a simple form field (like textbox, checkbox, etc.)
      Throws:
      jakarta.servlet.ServletException
      IOException