public abstract class AbstractRestOperation extends AbstractSynchronizableOperation implements IOperation
AbstractRestOperation
is an thread save, derivable
abstraction for remote communication using Representational state transfer
(REST).
This class contains the necessary implementation to establish the connection
to the remote host. Clients can register one ore more
IOperationDelegate
's to listen to the operations state.
By extending, clients need to set the URL by using setUrl(String)
.
The connection can be parameterized using query (
addQueryParameter(String, String)
or header
addHeaderParameter(String, String)
parameters.
The MD HTTP connection layer supports GET, POST, PUT and DELETE calls.
Clients have to overwrite getHTTPMethod()
to change the default HTTP
method.
The AbstractRestOperation
enables automatic HTTP Basic
authentication if the Credentials
are set in the Session
for
the calling URL. This behavior can be changed by overwriting
applyCredentials()
.
Constructor and Description |
---|
AbstractRestOperation() |
Modifier and Type | Method and Description |
---|---|
void |
addHeaderParameter(java.lang.String name,
java.lang.String value)
see
addHeaderParameter(String, String, boolean) where urlEncode
is set to false |
void |
addHeaderParameter(java.lang.String name,
java.lang.String[] values)
see
addHeaderParameter(String, String[], boolean) where
urlEncode is set to false |
void |
addHeaderParameter(java.lang.String name,
java.lang.String[] values,
boolean urlEncode)
Adds a header parameter with multiple values.
|
void |
addHeaderParameter(java.lang.String name,
java.lang.String value,
boolean urlEncode)
Adds a parameter to the HTTP header.
|
void |
addQueryParameter(java.lang.String key,
java.lang.String value)
see
addQueryParameter(String, String, boolean) where urlEncode
is set to false |
void |
addQueryParameter(java.lang.String name,
java.lang.String[] values)
see
addQueryParameter(String, String[], boolean) where urlEncode
is set to false |
void |
addQueryParameter(java.lang.String name,
java.lang.String[] values,
boolean urlEncode)
Adds a new query parameter with multiple values.
Delegates to addQueryParameter(String, String) . |
void |
addQueryParameter(java.lang.String key,
java.lang.String value,
boolean urlEncode)
Adds a query parameter with a single value.
|
java.lang.String[] |
getHeader()
Returns the header parameters.
|
java.util.Hashtable |
getHeaderParameters()
Returns all header parameters used for the request.
|
int |
getHTTPMethod()
Returns the HTTP method used for this operation.
|
byte[] |
getPostData()
Returns the set post data payload as a byte array.
|
java.util.Hashtable |
getQueryParameters()
Returns all query parameters used for the request.
|
java.lang.String |
getUrl()
Returns the used URL in combination with all query parameters.
|
void |
reset()
Resets the request and it's properties to it's initial state.
|
void |
setPostData(byte[] postData)
Sets the data if POST or PUT is required.
|
void |
setPostData(java.lang.String postData)
Sets the data if POST or PUT is required.
|
void |
setUrl(java.lang.String url)
Sets the url.
This method sets only the URL and must not be used to set query parameters. |
addOperationDelegate, execute, getRawResult, getResult, getResult, getResultCode, removeOperationDelegate
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addOperationDelegate, execute, getRawResult, getResult, getResult, getResultCode, removeOperationDelegate
public void reset()
public final void addQueryParameter(java.lang.String name, java.lang.String[] values, boolean urlEncode)
addQueryParameter(String, String)
.name
- of the parametervalues
- all values for this parameter, must not be nullurlEncode
- if true: the value will be URL-Encodedpublic final void addQueryParameter(java.lang.String name, java.lang.String[] values)
addQueryParameter(String, String[], boolean)
where urlEncode
is set to false
public final void addQueryParameter(java.lang.String key, java.lang.String value, boolean urlEncode)
http://host:port?key=value&key2=value
key
- value
- urlEncode
- if true: the value will be URL-Encodedpublic final void addQueryParameter(java.lang.String key, java.lang.String value)
addQueryParameter(String, String, boolean)
where urlEncode
is set to false
public java.util.Hashtable getQueryParameters()
public byte[] getPostData()
public void addHeaderParameter(java.lang.String name, java.lang.String[] values, boolean urlEncode)
addHeaderParameter(String, String)
.name
- of the parametervalues
- must not be nullurlEncode
- if true: the value will be URL-EncodedaddHeaderParameter(String, String)
public void addHeaderParameter(java.lang.String name, java.lang.String[] values)
addHeaderParameter(String, String[], boolean)
where
urlEncode is set to false
public void addHeaderParameter(java.lang.String name, java.lang.String value, boolean urlEncode)
name
- value
- urlEncode
- if true: the value will be URL-Encodedpublic void addHeaderParameter(java.lang.String name, java.lang.String value)
addHeaderParameter(String, String, boolean)
where urlEncode
is set to false
public java.util.Hashtable getHeaderParameters()
public java.lang.String getUrl()
public void setUrl(java.lang.String url)
addQueryParameter(String, String)
.url
- public java.lang.String[] getHeader()
public void setPostData(byte[] postData)
postData
- as Stringpublic void setPostData(java.lang.String postData)
postData
- as byte arraypublic int getHTTPMethod()
HttpConnectionHandler.ACTION_GET
.
Supported types are (listed in HttpConnectionHandler
):
HttpConnectionHandler.ACTION_GET
HttpConnectionHandler.ACTION_POST
HttpConnectionHandler.ACTION_PUT
HttpConnectionHandler.ACTION_DELETE