public abstract class HttpEntityHandler extends DefaultEntityHandler
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
JSON
Content type "application/json".
|
static java.lang.String |
SOAP_1_1
Content type "text/xml" for SOAP 1.1.
|
static java.lang.String |
SOAP_1_2
Content type "application/soap+xml" for SOAP 1.2.
|
static java.lang.String |
TEXT
Content type "text/plain".
|
static java.lang.String |
XML
Content type "application/xml".
|
Constructor and Description |
---|
HttpEntityHandler(DataServlet servlet,
DataService service)
Construct an HTTP entity handler.
|
HttpEntityHandler(DataServlet servlet,
DataService service,
org.slf4j.Logger logger)
Construct an HTTP entity handler.
|
Modifier and Type | Method and Description |
---|---|
DataValue |
attributeValue(XmlElement element,
java.lang.String name,
DataType type,
DataContext context)
Parse data value from an XML attribute.
|
DataValue |
attributeValue(XmlElement element,
java.lang.String name,
Property property,
DataContext context)
Parse data value from an XML attribute.
|
DataValue |
attributeValueWithMatch(DataBindingPattern pattern,
XmlElement element,
java.lang.String name,
DataType type,
DataContext context)
Parse data value from an XML attribute, matching a regular expression.
|
DataValue |
attributeValueWithMatch(DataBindingPattern pattern,
XmlElement element,
java.lang.String name,
Property property,
DataContext context)
Parse data value from an XML attribute, matching a regular expression.
|
ByteStream |
byteStream(org.apache.http.HttpResponse response) |
CharStream |
charStream(org.apache.http.HttpResponse response) |
void |
checkFault(XmlElement envelope)
Throw DataServiceException if the response contains a SOAP Fault.
|
void |
checkStatus(org.apache.http.HttpResponse response)
Throw DataServiceException if the response status is not 200-299.
|
void |
close(boolean ok,
CharStream stream,
org.apache.http.client.methods.CloseableHttpResponse response)
Close an HTTP response and stream, throwing an exception if the closing fails and 'ok' is true.
|
void |
close(boolean ok,
org.apache.http.client.methods.CloseableHttpResponse response)
Close an HTTP response, throwing an exception if the closing fails and 'ok' is true.
|
DataContext |
dataContext() |
org.apache.http.client.methods.HttpUriRequest |
delete(java.lang.String path,
java.lang.Object... components) |
DataValue |
elementValue(XmlElement element,
DataType type,
DataContext context)
Parse data value from the text of an XML element.
|
DataValue |
elementValue(XmlElement element,
Property property,
DataContext context)
Parse data value from the text of an XML element.
|
DataValue |
elementValueWithMatch(DataBindingPattern pattern,
XmlElement element,
DataType type,
DataContext context)
Parse data value from the text of an XML element, matching a regular expression.
|
DataValue |
elementValueWithMatch(DataBindingPattern pattern,
XmlElement element,
Property property,
DataContext context)
Parse data value from the text of an XML element, matching a regular expression.
|
java.lang.String |
encodeURIComponent(java.lang.Object value)
Percent-encode a URI component.
|
org.apache.http.client.methods.CloseableHttpResponse |
execute(org.apache.http.client.methods.HttpUriRequest request)
Execute an HTTP request.
|
org.apache.http.client.methods.CloseableHttpResponse |
execute(org.apache.http.client.methods.HttpUriRequest request,
java.lang.String accept)
Execute an HTTP request.
|
DataValue |
fieldValue(JsonObject object,
java.lang.String field,
DataType type,
DataContext context)
Parse data value from a field of a JSON object.
|
DataValue |
fieldValue(JsonObject object,
java.lang.String field,
Property property,
DataContext context)
Parse data value from a field of a JSON object.
|
DataValue |
fieldValueWithMatch(DataBindingPattern pattern,
JsonObject object,
java.lang.String field,
DataType type,
DataContext context)
Parse data value from a field of a JSON object, matching a regular expression.
|
DataValue |
fieldValueWithMatch(DataBindingPattern pattern,
JsonObject object,
java.lang.String field,
Property property,
DataContext context)
Parse data value from a field of a JSON object, matching a regular expression.
|
org.apache.http.client.methods.HttpUriRequest |
get(java.lang.String path,
java.lang.Object... components) |
JsonArray |
getArray(JsonObject object,
java.lang.String field)
Get a field of a JSON object as a JSON array.
|
HttpDestination |
getDestination() |
java.lang.String |
getDestinationURL(java.lang.String method,
java.lang.String path,
java.lang.Object... components)
Return destination URL formed by appending a request path with optional path components.
|
JsonObject |
getHeaders(org.apache.http.client.methods.CloseableHttpResponse response)
Get the response headers from an HTTP request.
|
org.apache.http.client.HttpClient |
getHttpClient() |
org.slf4j.Logger |
getLogger() |
JsonObject |
getObject(JsonObject object,
java.lang.String field)
Get a field of a JSON object as a JSON object.
|
org.apache.http.client.methods.HttpUriRequest |
head(java.lang.String path,
java.lang.Object... components) |
boolean |
isBackendHandler()
Return does this entity handler delegate to a backend system (as opposed to the main service database).
|
boolean |
isDebugEnabled() |
boolean |
isTraceEnabled() |
JsonArray |
jsonArray(CharStream stream)
Parse a character stream to a JSON array.
|
JsonObject |
jsonObject(CharStream stream)
Parse a character stream to a JSON object.
|
void |
logDebug(java.lang.String message)
Log a debug message to this handler's logger.
|
void |
logError(java.lang.String message,
java.lang.RuntimeException cause)
Log an error message to this handler's logger.
|
void |
logTrace(java.lang.String message)
Log a trace message to this handler's logger.
|
void |
mustReturnKey(EntityValue entity)
Check that an HTTP call returned values for all primary key properties.
|
org.apache.http.client.methods.HttpUriRequest |
options(java.lang.String path,
java.lang.Object... components) |
org.apache.http.client.methods.HttpUriRequest |
patch(java.lang.String path,
java.lang.Object... components) |
org.apache.http.client.methods.HttpUriRequest |
post(java.lang.String path,
java.lang.Object... components) |
org.apache.http.client.methods.HttpUriRequest |
put(java.lang.String path,
java.lang.Object... components) |
void |
setContent(org.apache.http.client.methods.HttpUriRequest request,
java.lang.Object content)
Set the request body content for an HTTP request.
|
void |
setContent(org.apache.http.client.methods.HttpUriRequest request,
java.lang.Object content,
java.lang.String contentType)
Set the request body content for an HTTP request, and optionally set the Content-Type header.
|
void |
setDestination(HttpDestination destination)
Set the HTTP destination for this handler.
|
void |
setHeaders(org.apache.http.client.methods.HttpUriRequest request,
JsonObject headers)
Set the request headers for an HTTP request.
|
org.apache.http.client.methods.HttpUriRequest |
trace(java.lang.String path,
java.lang.Object... components) |
XmlElement |
xmlElement(CharStream stream)
Parse a character stream to an XML element.
|
java.lang.String |
xmlText(java.lang.Object value)
Convert an object to text for an XML element.
|
createEntity, createLink, createMedia, deleteEntity, deleteLink, deleteStream, downloadMedia, downloadStream, executeQuery, getCacheDatabase, getClientRegistration, getDataService, getDataServlet, getNameForMetrics, headerValue, refreshAfter, refreshCache, updateEntity, updateLink, uploadMedia, uploadStream
allowUnused, loadAll, loadPartition
public static final java.lang.String JSON
public static final java.lang.String SOAP_1_1
public static final java.lang.String SOAP_1_2
public static final java.lang.String TEXT
public static final java.lang.String XML
public HttpEntityHandler(DataServlet servlet, DataService service)
servlet
- Data servlet, which communicates with the client.service
- Data service, which communicates with the database.public HttpEntityHandler(DataServlet servlet, DataService service, org.slf4j.Logger logger)
servlet
- Data servlet, which communicates with the client.service
- Data service, which communicates with the database.logger
- Logger to be used.public boolean isBackendHandler()
DefaultEntityHandler
Return does this entity handler delegate to a backend system (as opposed to the main service database).
isBackendHandler
in class DefaultEntityHandler
public java.lang.String getDestinationURL(java.lang.String method, java.lang.String path, java.lang.Object... components)
method
- HTTP method (e.g. GET, POST); used only if logging is enabled.path
- Request path prefix. Assumed to already be percent-encoded if that is needed.components
- Trailing path components. Assumed to already be percent-encoded if that is needed.public java.lang.String encodeURIComponent(java.lang.Object value)
value
- Value to be converted to a string (via toString), then percent-encoded.public org.slf4j.Logger getLogger()
public HttpDestination getDestination()
public void setDestination(HttpDestination destination)
destination
- HTTP destination.public org.apache.http.client.HttpClient getHttpClient()
public org.apache.http.client.methods.HttpUriRequest delete(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest get(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest head(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest options(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest patch(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest post(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest put(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public org.apache.http.client.methods.HttpUriRequest trace(java.lang.String path, java.lang.Object... components)
path
- Request path.components
- Path components.public DataContext dataContext()
public void setHeaders(org.apache.http.client.methods.HttpUriRequest request, JsonObject headers)
request
- HTTP request.headers
- Request headers, represented as a JSON object.public JsonObject getHeaders(org.apache.http.client.methods.CloseableHttpResponse response)
response
- HTTP response.public void setContent(org.apache.http.client.methods.HttpUriRequest request, java.lang.Object content)
request
- HTTP request.content
- Request body.public void setContent(org.apache.http.client.methods.HttpUriRequest request, java.lang.Object content, java.lang.String contentType)
request
- HTTP request.content
- Request body.contentType
- Content type (or null if it is to be automatically determined from the content).public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.client.methods.HttpUriRequest request)
request
- HTTP request.public org.apache.http.client.methods.CloseableHttpResponse execute(org.apache.http.client.methods.HttpUriRequest request, java.lang.String accept)
request
- HTTP request.accept
- For HTTP Accept header (or null if an Accept header is not required or is already set).public ByteStream byteStream(org.apache.http.HttpResponse response)
response
- HTTP response.public CharStream charStream(org.apache.http.HttpResponse response)
response
- HTTP response.public void checkFault(XmlElement envelope)
response
- SOAP Envelope.public void checkStatus(org.apache.http.HttpResponse response)
response
- HTTP response.public JsonArray jsonArray(CharStream stream)
stream
- Character stream.public JsonObject jsonObject(CharStream stream)
stream
- Character stream.public XmlElement xmlElement(CharStream stream)
stream
- Character stream.public java.lang.String xmlText(java.lang.Object value)
value
- Object (can be null).public DataValue attributeValue(XmlElement element, java.lang.String name, Property property, DataContext context)
element
- XML element containing the attribute.name
- XML attribute name.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue attributeValue(XmlElement element, java.lang.String name, DataType type, DataContext context)
element
- XML element containing the attribute.name
- XML attribute name.type
- Data type for the value to be parsed.context
- Data context for parsing.public DataValue attributeValueWithMatch(DataBindingPattern pattern, XmlElement element, java.lang.String name, Property property, DataContext context)
pattern
- Regular expression pattern.element
- XML element containing the attribute.name
- XML attribute name.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue attributeValueWithMatch(DataBindingPattern pattern, XmlElement element, java.lang.String name, DataType type, DataContext context)
pattern
- Regular expression pattern.element
- XML element containing the attribute.name
- XML attribute name.type
- Data type for the value to be parsed.context
- Data context for parsing.public DataValue elementValue(XmlElement element, Property property, DataContext context)
element
- XML element to be parsed.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue elementValue(XmlElement element, DataType type, DataContext context)
element
- XML element to be parsed.type
- Data type for the value to be parsed.context
- Data context for parsing.public DataValue elementValueWithMatch(DataBindingPattern pattern, XmlElement element, Property property, DataContext context)
pattern
- Regular expression pattern.element
- XML element to be parsed.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue elementValueWithMatch(DataBindingPattern pattern, XmlElement element, DataType type, DataContext context)
pattern
- Regular expression pattern.element
- XML element to be parsed.type
- Data type for the value to be parsed.context
- Data context for parsing.public DataValue fieldValue(JsonObject object, java.lang.String field, Property property, DataContext context)
object
- JSON object to be parsed.field
- Field name within JSON object.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue fieldValue(JsonObject object, java.lang.String field, DataType type, DataContext context)
object
- JSON object to be parsed.field
- Field name within JSON object.type
- Data type for the value to be parsed.context
- Data context for parsing.public DataValue fieldValueWithMatch(DataBindingPattern pattern, JsonObject object, java.lang.String field, Property property, DataContext context)
pattern
- Regular expression pattern.object
- JSON object to be parsed.field
- Field name within JSON object.property
- Property metadata (e.g. data type) for the value to be parsed.context
- Data context for parsing.public DataValue fieldValueWithMatch(DataBindingPattern pattern, JsonObject object, java.lang.String field, DataType type, DataContext context)
pattern
- Regular expression pattern.object
- JSON object to be parsed.field
- Field name within JSON object.type
- Data type for the value to be parsed.context
- Data context for parsing.public JsonArray getArray(JsonObject object, java.lang.String field)
object
- JSON objectfield
- Field name.public JsonObject getObject(JsonObject object, java.lang.String field)
object
- JSON objectfield
- Field name.public void close(boolean ok, org.apache.http.client.methods.CloseableHttpResponse response)
ok
- Was everything already OK with the response (i.e. caller is not currently handling an exception).response
- HTTP response.public void close(boolean ok, CharStream stream, org.apache.http.client.methods.CloseableHttpResponse response)
ok
- Was everything already OK with the response (i.e. caller is not currently handling an exception).stream
- Response stream.response
- HTTP response.public void mustReturnKey(EntityValue entity)
entity
- Entity which is expected to already hold values for all key properties.public void logError(java.lang.String message, java.lang.RuntimeException cause)
message
- Log message.cause
- Associated exception (or null).public void logDebug(java.lang.String message)
message
- Log message.public void logTrace(java.lang.String message)
message
- Log message.public boolean isDebugEnabled()
public boolean isTraceEnabled()