Package org.elasticsearch.rest
Class RestRequest
- java.lang.Object
-
- org.elasticsearch.rest.RestRequest
-
- All Implemented Interfaces:
ToXContent.Params
public abstract class RestRequest extends java.lang.Object implements ToXContent.Params
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RestRequest.BadParameterException
static class
RestRequest.ContentTypeHeaderException
static class
RestRequest.Method
-
Constructor Summary
Constructors Constructor Description RestRequest(NamedXContentRegistry xContentRegistry, java.lang.String uri, java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers)
Creates a new REST request.RestRequest(NamedXContentRegistry xContentRegistry, java.util.Map<java.lang.String,java.lang.String> params, java.lang.String path, java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers)
Creates a new REST request.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
applyContentParser(CheckedConsumer<XContentParser,java.io.IOException> applyParser)
If there is any content then callapplyParser
with the parser, otherwise do nothing.abstract BytesReference
content()
Tuple<XContentType,BytesReference>
contentOrSourceParam()
Get the content of the request or the contents of thesource
param or throw an exception if both are missing.XContentParser
contentOrSourceParamParser()
A parser for the contents of this request if it has contents, otherwise a parser for thesource
parameter if there is one, otherwise throws anElasticsearchParseException
.XContentParser
contentParser()
A parser for the contents of this request if there is a body, otherwise throws anElasticsearchParseException
.java.util.List<java.lang.String>
getAllHeaderValues(java.lang.String name)
Get all values for the header ornull
if the header was not foundjava.util.Map<java.lang.String,java.util.List<java.lang.String>>
getHeaders()
Get all of the headers and values associated with the headers.java.net.SocketAddress
getLocalAddress()
java.net.SocketAddress
getRemoteAddress()
NamedXContentRegistry
getXContentRegistry()
Get theNamedXContentRegistry
that should be used to create parsers from this request.XContentType
getXContentType()
TheXContentType
that was parsed from theContent-Type
header.abstract boolean
hasContent()
boolean
hasContentOrSourceParam()
Does this request have content or asource
parameter? Use this instead ofhasContent()
if this RestHandler treats thesource
parameter like the body content.boolean
hasParam(java.lang.String key)
java.lang.String
header(java.lang.String name)
Get the value of the header ornull
if not found.abstract RestRequest.Method
method()
java.lang.String
param(java.lang.String key)
java.lang.String
param(java.lang.String key, java.lang.String defaultValue)
boolean
paramAsBoolean(java.lang.String key, boolean defaultValue)
java.lang.Boolean
paramAsBoolean(java.lang.String key, java.lang.Boolean defaultValue)
float
paramAsFloat(java.lang.String key, float defaultValue)
int
paramAsInt(java.lang.String key, int defaultValue)
long
paramAsLong(java.lang.String key, long defaultValue)
ByteSizeValue
paramAsSize(java.lang.String key, ByteSizeValue defaultValue)
java.lang.String[]
paramAsStringArray(java.lang.String key, java.lang.String[] defaultValue)
java.lang.String[]
paramAsStringArrayOrEmptyIfAll(java.lang.String key)
TimeValue
paramAsTime(java.lang.String key, TimeValue defaultValue)
java.util.Map<java.lang.String,java.lang.String>
params()
static XContentType
parseContentType(java.util.List<java.lang.String> header)
Parses the given content type string for the media type.java.lang.String
path()
The path part of the URI (without the query string), decoded.java.lang.String
rawPath()
The non decoded, raw path provided.BytesReference
requiredContent()
abstract java.lang.String
uri()
The uri of the rest request, with the query string.void
withContentOrSourceParamParserOrNull(CheckedConsumer<XContentParser,java.io.IOException> withParser)
Call a consumer with the parser for the contents of this request if it has contents, otherwise with a parser for thesource
parameter if there is one, otherwise withnull
.
-
-
-
Constructor Detail
-
RestRequest
public RestRequest(NamedXContentRegistry xContentRegistry, java.lang.String uri, java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers)
Creates a new REST request.- Parameters:
xContentRegistry
- the content registryuri
- the raw URI that will be parsed into the path and the parametersheaders
- a map of the header; this map should implement a case-insensitive lookup- Throws:
RestRequest.BadParameterException
- if the parameters can not be decodedRestRequest.ContentTypeHeaderException
- if the Content-Type header can not be parsed
-
RestRequest
public RestRequest(NamedXContentRegistry xContentRegistry, java.util.Map<java.lang.String,java.lang.String> params, java.lang.String path, java.util.Map<java.lang.String,java.util.List<java.lang.String>> headers)
Creates a new REST request. In contrast toRestRequest(NamedXContentRegistry, Map, String, Map)
, the path is not decoded so this constructor will not throw aRestRequest.BadParameterException
.- Parameters:
xContentRegistry
- the content registryparams
- the request parameterspath
- the raw path (which is not parsed)headers
- a map of the header; this map should implement a case-insensitive lookup- Throws:
RestRequest.ContentTypeHeaderException
- if the Content-Type header can not be parsed
-
-
Method Detail
-
method
public abstract RestRequest.Method method()
-
uri
public abstract java.lang.String uri()
The uri of the rest request, with the query string.
-
rawPath
public java.lang.String rawPath()
The non decoded, raw path provided.
-
path
public final java.lang.String path()
The path part of the URI (without the query string), decoded.
-
hasContent
public abstract boolean hasContent()
-
content
public abstract BytesReference content()
-
requiredContent
public final BytesReference requiredContent()
- Returns:
- content of the request body or throw an exception if the body or content type is missing
-
header
public final java.lang.String header(java.lang.String name)
Get the value of the header ornull
if not found. This method only retrieves the first header value if multiple values are sent. Use ofgetAllHeaderValues(String)
should be preferred
-
getAllHeaderValues
public final java.util.List<java.lang.String> getAllHeaderValues(java.lang.String name)
Get all values for the header ornull
if the header was not found
-
getHeaders
public final java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders()
Get all of the headers and values associated with the headers. Modifications of this map are not supported.
-
getXContentType
@Nullable public final XContentType getXContentType()
TheXContentType
that was parsed from theContent-Type
header. This value will benull
in the case of a request without a validContent-Type
header, a request without content (hasContent()
, or a plain text request
-
getRemoteAddress
@Nullable public java.net.SocketAddress getRemoteAddress()
-
getLocalAddress
@Nullable public java.net.SocketAddress getLocalAddress()
-
hasParam
public final boolean hasParam(java.lang.String key)
-
param
public final java.lang.String param(java.lang.String key)
- Specified by:
param
in interfaceToXContent.Params
-
param
public final java.lang.String param(java.lang.String key, java.lang.String defaultValue)
- Specified by:
param
in interfaceToXContent.Params
-
params
public java.util.Map<java.lang.String,java.lang.String> params()
-
paramAsFloat
public float paramAsFloat(java.lang.String key, float defaultValue)
-
paramAsInt
public int paramAsInt(java.lang.String key, int defaultValue)
-
paramAsLong
public long paramAsLong(java.lang.String key, long defaultValue)
-
paramAsBoolean
public boolean paramAsBoolean(java.lang.String key, boolean defaultValue)
- Specified by:
paramAsBoolean
in interfaceToXContent.Params
-
paramAsBoolean
public java.lang.Boolean paramAsBoolean(java.lang.String key, java.lang.Boolean defaultValue)
- Specified by:
paramAsBoolean
in interfaceToXContent.Params
-
paramAsSize
public ByteSizeValue paramAsSize(java.lang.String key, ByteSizeValue defaultValue)
-
paramAsStringArray
public java.lang.String[] paramAsStringArray(java.lang.String key, java.lang.String[] defaultValue)
-
paramAsStringArrayOrEmptyIfAll
public java.lang.String[] paramAsStringArrayOrEmptyIfAll(java.lang.String key)
-
getXContentRegistry
public NamedXContentRegistry getXContentRegistry()
Get theNamedXContentRegistry
that should be used to create parsers from this request.
-
contentParser
public final XContentParser contentParser() throws java.io.IOException
A parser for the contents of this request if there is a body, otherwise throws anElasticsearchParseException
. UseapplyContentParser(CheckedConsumer)
if you want to gracefully handle when the request doesn't have any contents. UsecontentOrSourceParamParser()
for requests that support specifying the request body in thesource
param.- Throws:
java.io.IOException
-
applyContentParser
public final void applyContentParser(CheckedConsumer<XContentParser,java.io.IOException> applyParser) throws java.io.IOException
If there is any content then callapplyParser
with the parser, otherwise do nothing.- Throws:
java.io.IOException
-
hasContentOrSourceParam
public final boolean hasContentOrSourceParam()
Does this request have content or asource
parameter? Use this instead ofhasContent()
if this RestHandler treats thesource
parameter like the body content.
-
contentOrSourceParamParser
public final XContentParser contentOrSourceParamParser() throws java.io.IOException
A parser for the contents of this request if it has contents, otherwise a parser for thesource
parameter if there is one, otherwise throws anElasticsearchParseException
. UsewithContentOrSourceParamParserOrNull(CheckedConsumer)
instead if you need to handle the absence request content gracefully.- Throws:
java.io.IOException
-
withContentOrSourceParamParserOrNull
public final void withContentOrSourceParamParserOrNull(CheckedConsumer<XContentParser,java.io.IOException> withParser) throws java.io.IOException
Call a consumer with the parser for the contents of this request if it has contents, otherwise with a parser for thesource
parameter if there is one, otherwise withnull
. UsecontentOrSourceParamParser()
if you should throw an exception back to the user when there isn't request content.- Throws:
java.io.IOException
-
contentOrSourceParam
public final Tuple<XContentType,BytesReference> contentOrSourceParam()
Get the content of the request or the contents of thesource
param or throw an exception if both are missing. PrefercontentOrSourceParamParser()
orwithContentOrSourceParamParserOrNull(CheckedConsumer)
if you need a parser.
-
parseContentType
public static XContentType parseContentType(java.util.List<java.lang.String> header)
Parses the given content type string for the media type. This method currently ignores parameters.
-
-