Class RequestImpl
- All Implemented Interfaces:
jakarta.servlet.http.HttpServletRequest
,jakarta.servlet.ServletRequest
,StaplerRequest2
StaplerRequest2
implementation.- Author:
- Kohsuke Kawaguchi
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.kohsuke.stapler.StaplerRequest2
StaplerRequest2.RenderOnDemandParameters
-
Field Summary
Modifier and TypeFieldDescriptionfinal List<org.kohsuke.stapler.AncestorImpl>
Ancestor nodes traversed so far.final Stapler
final TokenList
Tokenized URLs and consumed tokens.Fields inherited from interface jakarta.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
-
Constructor Summary
ConstructorDescriptionRequestImpl
(Stapler stapler, jakarta.servlet.http.HttpServletRequest request, List<org.kohsuke.stapler.AncestorImpl> ancestors, TokenList tokens) RequestImpl
(Stapler stapler, javax.servlet.http.HttpServletRequest request, List<org.kohsuke.stapler.AncestorImpl> ancestors, TokenList tokens) Deprecated. -
Method Summary
Modifier and TypeMethodDescription<T> T
Data-bind from aJSONObject
to the given target type, by using introspection or constructor parameters injection.void
Data-binds fromJSONObject
to the given object.<T> List<T>
bindJSONToList
(Class<T> type, Object src) Data-bind from eitherJSONObject
orJSONArray
to a list, by usingStaplerRequest2.bindJSON(Class, JSONObject)
as the lower-level mechanism.<T> T
bindParameters
(Class<T> type, String prefix) Instantiates a new object by injecting constructor parameters from the form parameters.<T> T
bindParameters
(Class<T> type, String prefix, int index) Works likeStaplerRequest2.bindParameters(Class, String)
but uses n-th value of all the parameters.void
bindParameters
(Object bean) Binds form parameters to a bean by using introspection.void
bindParameters
(Object bean, String prefix) Binds form parameters to a bean by using introspection.<T> List<T>
bindParametersToList
(Class<T> type, String prefix) Binds collection form parameters to beans by using introspection or constructor parameters injection.boolean
checkIfModified
(long lastModified, StaplerResponse2 rsp) Checks "If-Modified-Since" header and returns false if the resource needs to be served.boolean
checkIfModified
(long lastModified, StaplerResponse2 rsp, long expiration) boolean
checkIfModified
(Calendar timestampOfResource, StaplerResponse2 rsp) boolean
checkIfModified
(Date timestampOfResource, StaplerResponse2 rsp) createJavaScriptProxy
(Object toBeExported) Exports the given Java object as a JavaScript proxy and returns a JavaScript expression to create a proxy on the client side.createJavaScriptProxyParameters
(Object toBeExported) Exports the given Java object as a JavaScript proxy and returns the parameters needed to callmakeStaplerProxy
.findAncestor
(Class type) Finds the nearest ancestor that has the object of the given type, or null if not found.findAncestor
(Object anc) Finds the nearest ancestor whoseAncestor.getObject()
matches the given object.<T> T
findAncestorObject
(Class<T> type) Short forfindAncestor(type).getObject()
, with proper handling for null de-reference.Returns a list of ancestor objects that lead to the "it" object.Gets theBindInterceptor
set for this request.Short cut for obtainingBoundObjectTable
associated with this webapp.getFileItem
(String name) Deprecated.org.apache.commons.fileupload2.core.FileItem
getFileItem2
(String name) Obtains a commons-fileupload2 object that represents an uploaded file.Gets therequest URI
of the original request, so that you can access the value even from JSP.Returns the same thing asStaplerRequest2.getRestOfPath()
but in the pre-decoded form, so all "%HH"s as present in the request URL is intact.getParameter
(String name) String[]
getParameterValues
(String name) Gets the referer header (like "http://foobar.com/zot") or null.HttpServletRequest.getRequestURI()
plus additional query string part, if it exists.HttpServletRequest.getRequestURL()
plus additional query string part, if it exists.Returns the additional URL portion that wasn't used by the stapler, excluding the query string.Gets the part of the request URL from protocol up to the context path.jakarta.servlet.ServletContext
Returns theServletContext
object given to the stapler dispatcher servlet.Gets theStapler
instance that this belongs to.net.sf.json.JSONObject
Gets the content of the structured form submission.jakarta.servlet.RequestDispatcher
Convenience method to callStaplerRequest2.getView(Klass, String)
withClass
.jakarta.servlet.RequestDispatcher
Gets theRequestDispatcher
that represents a specific view for the given object.jakarta.servlet.RequestDispatcher
jakarta.servlet.RequestDispatcher
Gets theRequestDispatcher
that represents a specific view for the given class.Short forgetStapler().getWebApp()
boolean
hasParameter
(String name) Short forgetParameter(name)!=null
boolean
Returns true if this request represents a server method call to a JavaScript proxy object.setBindInterceptor
(BindInterceptor bindListener) setBindInterceptpr
(BindInterceptor bindListener) setBindListener
(BindInterceptor bindListener) Methods inherited from class jakarta.servlet.http.HttpServletRequestWrapper
authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getHttpServletMapping, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getTrailerFields, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromUrl, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isTrailerFieldsReady, isUserInRole, login, logout, newPushBuilder, upgrade
Methods inherited from class jakarta.servlet.ServletRequestWrapper
getAsyncContext, getAttribute, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getRequestDispatcher, getScheme, getServerName, getServerPort, isAsyncStarted, isAsyncSupported, isSecure, isWrapperFor, isWrapperFor, removeAttribute, setAttribute, setCharacterEncoding, setRequest, startAsync, startAsync
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface jakarta.servlet.http.HttpServletRequest
authenticate, changeSessionId, getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getHttpServletMapping, getIntHeader, getMethod, getPart, getParts, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getRequestURI, getRequestURL, getServletPath, getSession, getSession, getTrailerFields, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromUrl, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isTrailerFieldsReady, isUserInRole, login, logout, newPushBuilder, upgrade
Methods inherited from interface jakarta.servlet.ServletRequest
getAsyncContext, getAttribute, getAttributeNames, getCharacterEncoding, getContentLength, getContentLengthLong, getContentType, getDispatcherType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequestDispatcher, getScheme, getServerName, getServerPort, isAsyncStarted, isAsyncSupported, isSecure, removeAttribute, setAttribute, setCharacterEncoding, startAsync, startAsync
-
Field Details
-
Constructor Details
-
RequestImpl
-
RequestImpl
@Deprecated public RequestImpl(Stapler stapler, javax.servlet.http.HttpServletRequest request, List<org.kohsuke.stapler.AncestorImpl> ancestors, TokenList tokens) Deprecated.
-
-
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 interfaceStaplerRequest2
-
getBoundObjectTable
Description copied from interface:StaplerRequest2
Short cut for obtainingBoundObjectTable
associated with this webapp.- Specified by:
getBoundObjectTable
in interfaceStaplerRequest2
-
createJavaScriptProxy
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 forgetBoundObjectTable().bind(toBeExported).getProxyScript()
- Specified by:
createJavaScriptProxy
in interfaceStaplerRequest2
-
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 callmakeStaplerProxy
.- Specified by:
createJavaScriptProxyParameters
in interfaceStaplerRequest2
-
getStapler
Description copied from interface:StaplerRequest2
Gets theStapler
instance that this belongs to.- Specified by:
getStapler
in interfaceStaplerRequest2
-
getWebApp
Description copied from interface:StaplerRequest2
Short forgetStapler().getWebApp()
- Specified by:
getWebApp
in interfaceStaplerRequest2
-
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 interfaceStaplerRequest2
- Returns:
- can be empty string, but never null.
-
getOriginalRestOfPath
Description copied from interface:StaplerRequest2
Returns the same thing asStaplerRequest2.getRestOfPath()
but in the pre-decoded form, so all "%HH"s as present in the request URL is intact.- Specified by:
getOriginalRestOfPath
in interfaceStaplerRequest2
-
getServletContext
public jakarta.servlet.ServletContext getServletContext()Description copied from interface:StaplerRequest2
Returns theServletContext
object given to the stapler dispatcher servlet.- Specified by:
getServletContext
in interfacejakarta.servlet.ServletRequest
- Specified by:
getServletContext
in interfaceStaplerRequest2
- Overrides:
getServletContext
in classjakarta.servlet.ServletRequestWrapper
-
getParameter
- Specified by:
getParameter
in interfacejakarta.servlet.ServletRequest
- Overrides:
getParameter
in classjakarta.servlet.ServletRequestWrapper
-
getParameterMap
- Specified by:
getParameterMap
in interfacejakarta.servlet.ServletRequest
- Overrides:
getParameterMap
in classjakarta.servlet.ServletRequestWrapper
-
getParameterNames
- Specified by:
getParameterNames
in interfacejakarta.servlet.ServletRequest
- Overrides:
getParameterNames
in classjakarta.servlet.ServletRequestWrapper
-
getParameterValues
- Specified by:
getParameterValues
in interfacejakarta.servlet.ServletRequest
- Overrides:
getParameterValues
in classjakarta.servlet.ServletRequestWrapper
-
getRequestURIWithQueryString
Description copied from interface:StaplerRequest2
HttpServletRequest.getRequestURI()
plus additional query string part, if it exists.- Specified by:
getRequestURIWithQueryString
in interfaceStaplerRequest2
-
getRequestURLWithQueryString
Description copied from interface:StaplerRequest2
HttpServletRequest.getRequestURL()
plus additional query string part, if it exists.- Specified by:
getRequestURLWithQueryString
in interfaceStaplerRequest2
-
getView
Description copied from interface:StaplerRequest2
Gets theRequestDispatcher
that represents a specific view for the given object. This support both JSP and Jelly.- Specified by:
getView
in interfaceStaplerRequest2
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
Description copied from interface:StaplerRequest2
Convenience method to callStaplerRequest2.getView(Klass, String)
withClass
.- Specified by:
getView
in interfaceStaplerRequest2
- Throws:
IOException
-
getView
public jakarta.servlet.RequestDispatcher getView(Klass<?> clazz, String viewName) throws IOException Description copied from interface:StaplerRequest2
Gets theRequestDispatcher
that represents a specific view for the given class.Unlike
StaplerRequest2.getView(Object, String)
, calling this request dispatcher doesn't set the "it" variable, sogetView(it.getClass(),viewName)
andgetView(it,viewName)
aren't the same thing.- Specified by:
getView
in interfaceStaplerRequest2
- Throws:
IOException
-
getView
public jakarta.servlet.RequestDispatcher getView(Klass<?> clazz, Object it, String viewName) throws IOException - Throws:
IOException
-
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 likehttp://foobar:8080/something
- Specified by:
getRootPath
in interfaceStaplerRequest2
-
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 interfaceStaplerRequest2
-
getAncestors
Description copied from interface:StaplerRequest2
Returns a list of ancestor objects that lead to the "it" object. The returned list containsAncestor
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:- the root object
- root.getFoo() object
- root.getFoo().getBar("zot") object (the "it" object)
- Specified by:
getAncestors
in interfaceStaplerRequest2
- Returns:
- list of
Ancestor
s. Can be empty, but always non-null.
-
findAncestor
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 interfaceStaplerRequest2
-
findAncestorObject
Description copied from interface:StaplerRequest2
Short forfindAncestor(type).getObject()
, with proper handling for null de-reference. This version is also type safe.- Specified by:
findAncestorObject
in interfaceStaplerRequest2
-
findAncestor
Description copied from interface:StaplerRequest2
Finds the nearest ancestor whoseAncestor.getObject()
matches the given object.- Specified by:
findAncestor
in interfaceStaplerRequest2
-
hasParameter
Description copied from interface:StaplerRequest2
Short forgetParameter(name)!=null
- Specified by:
hasParameter
in interfaceStaplerRequest2
-
getOriginalRequestURI
Description copied from interface:StaplerRequest2
Gets therequest URI
of the original request, so that you can access the value even from JSP.- Specified by:
getOriginalRequestURI
in interfaceStaplerRequest2
-
checkIfModified
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.
- If
timestampOfResource
is 0 or negative, this method just returns false. - If "If-Modified-Since" header is sent and if it's bigger than
timestampOfResource
, then this method setsHttpServletResponse.SC_NOT_MODIFIED
as the response code and returns true. - 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 interfaceStaplerRequest2
- 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
.
- If
-
checkIfModified
- Specified by:
checkIfModified
in interfaceStaplerRequest2
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
- Specified by:
checkIfModified
in interfaceStaplerRequest2
- See Also:
-
checkIfModified
- Specified by:
checkIfModified
in interfaceStaplerRequest2
- See Also:
-
getBindInterceptor
Description copied from interface:StaplerRequest2
Gets theBindInterceptor
set for this request.- Specified by:
getBindInterceptor
in interfaceStaplerRequest2
- See Also:
-
setBindListener
- Specified by:
setBindListener
in interfaceStaplerRequest2
-
setBindInterceptpr
- Specified by:
setBindInterceptpr
in interfaceStaplerRequest2
-
setBindInterceptor
- Specified by:
setBindInterceptor
in interfaceStaplerRequest2
-
bindParameters
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', thenbean.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 interfaceStaplerRequest2
- Parameters:
bean
- The object which will be filled out.- See Also:
-
BeanUtils.setProperty(Object, String, Object)
-
bindParameters
Description copied from interface:StaplerRequest2
Binds form parameters to a bean by using introspection. This method works likeStaplerRequest2.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 invokebean.setBar("zot")
.- Specified by:
bindParameters
in interfaceStaplerRequest2
-
bindParametersToList
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)
andStaplerRequest2.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"}
andgetParameterValues("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 interfaceStaplerRequest2
- Parameters:
type
- Type of the bean to be created. This class must have the default no-arg constructor.prefix
- SeeStaplerRequest2.bindParameters(Object, String)
for details.- Returns:
- Can be empty but never null.
-
bindParameters
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 asnew Foo(getParameter("foo.a"),getParameter("foo.b"))
.- Specified by:
bindParameters
in interfaceStaplerRequest2
-
bindParameters
Description copied from interface:StaplerRequest2
Works likeStaplerRequest2.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 interfaceStaplerRequest2
-
bindJSON
Description copied from interface:StaplerRequest2
Data-bind from aJSONObject
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 { @
... and if JSONObject looks likeDataBoundConstructor
public Foo(Integer x, String y, boolean z, Bar bar) { ... } } class Bar { @DataBoundConstructor
public Bar(int x, int y) {} }{ y:"text", z:true, bar:{x:1,y:2}}
then, this method returnsnew 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 interfaceStaplerRequest2
-
bindJSON
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 interfaceStaplerRequest2
- 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
Description copied from interface:StaplerRequest2
Data-binds fromJSONObject
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 fromJSONObject
thus more structured, whereasStaplerRequest2.bindParameters(Object, String)
uses the map structure of the form submission.- Specified by:
bindJSON
in interfaceStaplerRequest2
-
bindJSONToList
Description copied from interface:StaplerRequest2
Data-bind from eitherJSONObject
orJSONArray
to a list, by usingStaplerRequest2.bindJSON(Class, JSONObject)
as the lower-level mechanism.If the source is
JSONObject
, the returned list will contain a single item. If it isJSONArray
, each item will be bound. If it is null, then the list will be empty.- Specified by:
bindJSONToList
in interfaceStaplerRequest2
-
getSubmittedForm
public net.sf.json.JSONObject getSubmittedForm() throws jakarta.servlet.ServletExceptionDescription copied from interface:StaplerRequest2
Gets the content of the structured form submission.- Specified by:
getSubmittedForm
in interfaceStaplerRequest2
- 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 interfaceStaplerRequest2
- 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 interfaceStaplerRequest2
- 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
-
RequestImpl(Stapler, HttpServletRequest, List, TokenList)