public class RPCResponse extends DataClass
RPCRequest
Modifier and Type | Field and Description |
---|---|
static int |
INVALID_RESPONSE_FORMAT
Indicates that a response with invalid format has been received from server.
|
static int |
STATUS_AUTHORIZATION_FAILURE
Indicates a
Declarative Security failure on the server. |
static int |
STATUS_CONNECTION_RESET_ERROR
This response code only occurs when using the HTTP proxy.
|
static int |
STATUS_FAILURE
Indicates a generic failure on the server.
|
static int |
STATUS_LOGIN_INCORRECT
Indicates that the RPC has been intercepted by an authenticator that requires the user to log in.
|
static int |
STATUS_LOGIN_REQUIRED
Indicates that a login is required before this RPCRequest can proceed.
|
static int |
STATUS_LOGIN_SUCCESS
Indicates that the login succeeded.
|
static int |
STATUS_MAX_FILE_SIZE_EXCEEDED
Indicates that uploaded file exceeded max file size allowed.
|
static int |
STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED
Indicates that too many authentication attempts have been made and the server refuses to accept any more login attempts.
|
static int |
STATUS_MAX_POST_SIZE_EXCEEDED
Indicates that the total size of the data sent to the server was more than the server is
configured to allow.
|
static int |
STATUS_OFFLINE
Indicates that the browser is currently offline, and that we do not hold a cached response for the request.
|
static int |
STATUS_SERVER_TIMEOUT
Indicates a request timed out with no server response.
|
static int |
STATUS_SUCCESS
Indicates successful completion of the request.
|
static int |
STATUS_TRANSACTION_FAILED
Indicates that the request was either never attempted or was rolled back, because automatic or user transactions are in
force and another request in the same transaction failed.
|
static int |
STATUS_TRANSPORT_ERROR
This response code is usable only with the XMLHttpRequest transport and indicates that the server returned an HTTP
response code outside the range 200-299 (all of these statuses indicate success, but ordinarily only 200 is used).
|
static int |
STATUS_UNKNOWN_HOST_ERROR
This response code only occurs when using the HTTP proxy.
|
static int |
STATUS_UPDATE_WITHOUT_PK_ERROR
Indicates that the client attempted an update or remove operation without providing primary key field(s)
|
static int |
STATUS_VALIDATION_ERROR
Indicates a validation failure on the server.
|
factoryCreated, factoryProperties, readOnly
Constructor and Description |
---|
RPCResponse() |
RPCResponse(com.google.gwt.core.client.JavaScriptObject jsObj) |
Modifier and Type | Method and Description |
---|---|
static void |
create()
RPCResponses shouldn't be created directly.
|
java.util.Map |
getDataAsMap()
The data sent by the server.
|
com.google.gwt.core.client.JavaScriptObject |
getDataAsObject()
The data sent by the server.
|
java.lang.String |
getDataAsString()
The data sent by the server.
|
java.util.Map |
getHttpHeaders()
HTTP headers returned by the server as a map from header name to header value.
|
java.lang.Integer |
getHttpResponseCode()
This attribute (available when using the the
xmlHttpRequest transport) contains the HTTP response code sent
by the server. |
java.lang.String |
getHttpResponseText()
The actual text of the HTTP response.
|
static RPCResponse |
getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj) |
int |
getStatus()
Status code for this response.
|
java.lang.Integer |
getTransactionNum()
ID of the transaction sent to the server via
RPCManager.sendQueue()
containing the RPCRequest associated with this response. |
void |
setStatus(int status)
Status code for this response.
|
applyFactoryProperties, doAddHandler, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsDoubleArray, getAttributeAsFloat, getAttributeAsInt, getAttributeAsIntArray, getAttributeAsJavaScriptObject, getAttributeAsLong, getAttributeAsMap, getAttributeAsObject, getAttributeAsRecord, getAttributeAsString, getAttributeAsStringArray, getAttributes, getHandlerCount, getReadOnly, isFactoryCreated, logConfiguration, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttributeAsJavaObject, setFactoryCreated, setReadOnly
public static final int INVALID_RESPONSE_FORMAT
One possible cause for this error
can be the reception of a RestDataSource JSON response that lacks a valid RestDataSource.jsonPrefix
and/or RestDataSource.jsonSuffix
If it is using "xml" or "json" dataFormat, the response could not be parsed as XML or JSON.
public static final int STATUS_AUTHORIZATION_FAILURE
Declarative Security
failure on the server. See the
error handling section in RPCManager documentation
for more information.public static final int STATUS_CONNECTION_RESET_ERROR
public static final int STATUS_FAILURE
RPCManager documentation
for more information.public static final int STATUS_LOGIN_INCORRECT
public static final int STATUS_LOGIN_REQUIRED
Applications do not directly set this status
code, instead, to trigger the relogin flow, return the loginRequiredMarker in the response sent by your server when
login is required. See the Relogin Overview
for details.
public static final int STATUS_LOGIN_SUCCESS
public static final int STATUS_MAX_FILE_SIZE_EXCEEDED
public static final int STATUS_MAX_LOGIN_ATTEMPTS_EXCEEDED
public static final int STATUS_MAX_POST_SIZE_EXCEEDED
On internal networks, these limits can typically be safely raised or removed. With
Tomcat, for example, you can remove the post limit by specifying the following attribute
on the <Connector> element in conf/server.xml:
maxPostSize="-1"
In Jetty, you can update or create war/WEB-INF/jetty-web.xml, adding a section like this
<Configure class="org.eclipse.jetty.webapp.WebAppContext"/> <Set name="maxFormContentSize">2000000</Set> </Configure>NOTE: this status code is used whenever the server framework receives a request where the POST data has been removed, however, there are other possible causes, including:
public static final int STATUS_OFFLINE
public static final int STATUS_SERVER_TIMEOUT
This is a client-only error code - never sent by the server (since it's the server that times out).
NOTE that if using hiddenFrame
as the transport (not the
default), a malformed response such as a "500 Server Error" or 404 errors will be reported as a timeout.
public static final int STATUS_SUCCESS
RPCManager documentation
for more information.public static final int STATUS_TRANSACTION_FAILED
public static final int STATUS_TRANSPORT_ERROR
Note that currently this
error code will never occur for the hiddenFrame
transport - instead, use STATUS_SERVER_TIMEOUT
to detect hiddenFrame
transport errors.
public static final int STATUS_UNKNOWN_HOST_ERROR
public static final int STATUS_UPDATE_WITHOUT_PK_ERROR
public static final int STATUS_VALIDATION_ERROR
RPCManager documentation
for more information.public RPCResponse()
public RPCResponse(com.google.gwt.core.client.JavaScriptObject jsObj)
public static RPCResponse getOrCreateRef(com.google.gwt.core.client.JavaScriptObject jsObj)
public java.util.Map getHttpHeaders()
Headers are available only when the
default RPCTransport
"xmlHttpRequest" is in use, and browsers may limit access to
headers for cross-domain requests or in other security-sensitive scenarios.
public java.lang.Integer getHttpResponseCode()
xmlHttpRequest
transport) contains the HTTP response code sent
by the server. Note that this is different from status
- that
attribute is used to indicate a status code for the RPC itself whereas httpResponseCode is the raw HTTP response code
for the HTTP request that contained the RPCRequest.
This feature relies on the XMLHttpRequest object which can be
disabled by end-users in some supported browsers. See PlatformDependencies
for more
information.
If you're using this attribute, you'll typically want to avoid the default error handling response of
RPCManager. To do so, set RPCRequest.willHandleError
to
true
.
public java.lang.String getHttpResponseText()
RPCTransport
"xmlHttpRequest" transport is in use,public void setStatus(int status)
RPCManager docs
for more information on what the RPCManager does with the status
code and how you can override this behavior. When using the Smart GWT server you can set the rpcResponse.status by calling the server-side method RPCResponse.setStatus().
When not using the Smart GWT server, the RPCManager makes
no assumptions about the structure of the response, so the status code just reflects the httpResponseCode
: status will be STATUS_TRANSPORT_ERROR
if an HTTP-level error occurred such
as "500 server error". If you have a status code you need to transmit you can simply embed it in the response (as part
of data
) and interpret it from the callback.
With or without the
Smart GWT server, the Relogin
status codes (such as STATUS_LOGIN_REQUIRED
) are triggered whenever special
markers, such as the loginRequiredMarker, appear in the body of the response. See the Relogin\n Overview
for details.
status
- Default value is 0public int getStatus()
RPCManager docs
for more information on what the RPCManager does with the status
code and how you can override this behavior. When using the Smart GWT server you can set the rpcResponse.status by calling the server-side method RPCResponse.setStatus().
When not using the Smart GWT server, the RPCManager makes
no assumptions about the structure of the response, so the status code just reflects the httpResponseCode
: status will be STATUS_TRANSPORT_ERROR
if an HTTP-level error occurred such
as "500 server error". If you have a status code you need to transmit you can simply embed it in the response (as part
of data
) and interpret it from the callback.
With or without the
Smart GWT server, the Relogin
status codes (such as STATUS_LOGIN_REQUIRED
) are triggered whenever special
markers, such as the loginRequiredMarker, appear in the body of the response. See the Relogin\n Overview
for details.
public java.lang.Integer getTransactionNum()
RPCManager.sendQueue()
containing the RPCRequest
associated with this response.public static void create()
RPCRequest
.public java.util.Map getDataAsMap()
When communicating with the SmartClient server, rpcResponse.data
is the
data passed to the server-side method RPCResponse.setData()
by your Java
code. This data is translated into JavaScript objects by the rules described under
rpcRequest.data
in the SmartClient Reference.
Simple types (Numeric values, Strings, Dates, Booleans) will be available as their
equivalent Java types in your client side GWT code. Complex objects (such as serialized
Map
s or List
s from the server) will not be automatically
translated back into Java on the client - they will arrive as JavaScriptObject
instances. You can easily convert to the appropriate type yourself using the
JSOHelper
class. The JSOHelper.convertToJava(JavaScriptObject, boolean)
method performs a recursive conversion of JavaScriptObject
s returning a
List
(or array) for JavaScript arrays or a Map
for simple
JavaScript objects (key:value pairs).
When not communicating with the SmartClient server rpcResponse.data
contains the raw HTTP response body. See rpcRequest.useSimpleHttp
,
rpcRequest.serverOutputAsString, rpcRequest.evalResult
in
the SmartClient Reference for details.
RPCRequest.setData(JavaScriptObject)
,
RPCRequest.setData(Map)
,
RPCRequest.setData(com.smartgwt.client.data.Record)
,
RPCRequest.setData(String)
public java.lang.String getDataAsString()
When communicating with the SmartClient server, rpcResponse.data
is the
data passed to the server-side method RPCResponse.setData()
by your Java
code. This data is translated into JavaScript objects by the rules described under
rpcRequest.data
in the SmartClient Reference.
Simple types (Numeric values, Strings, Dates, Booleans) will be available as their
equivalent Java types in your client side GWT code. Complex objects (such as serialized
Map
s or List
s from the server) will not be automatically
translated back into Java on the client - they will arrive as JavaScriptObject
instances. You can easily convert to the appropriate type yourself using the
JSOHelper
class. The JSOHelper.convertToJava(JavaScriptObject, boolean)
method performs a recursive conversion of JavaScriptObject
s returning a
List
(or array) for JavaScript arrays or a Map
for simple
JavaScript objects (key:value pairs).
When not communicating with the SmartClient server rpcResponse.data
contains the raw HTTP response body. See rpcRequest.useSimpleHttp
,
rpcRequest.serverOutputAsString, rpcRequest.evalResult
in
the SmartClient Reference for details.
RPCRequest.setData(JavaScriptObject)
,
RPCRequest.setData(Map)
,
RPCRequest.setData(com.smartgwt.client.data.Record)
,
RPCRequest.setData(String)
public com.google.gwt.core.client.JavaScriptObject getDataAsObject()
When communicating with the SmartClient server, rpcResponse.data
is the
data passed to the server-side method RPCResponse.setData()
by your Java
code. This data is translated into JavaScript objects by the rules described under
rpcRequest.data
in the SmartClient Reference.
Simple types (Numeric values, Strings, Dates, Booleans) will be available as their
equivalent Java types in your client side GWT code. Complex objects (such as serialized
Map
s or List
s from the server) will not be automatically
translated back into Java on the client - they will arrive as JavaScriptObject
instances. You can easily convert to the appropriate type yourself using the
JSOHelper
class. The JSOHelper.convertToJava(JavaScriptObject, boolean)
method performs a recursive conversion of JavaScriptObject
s returning a
List
(or array) for JavaScript arrays or a Map
for simple
JavaScript objects (key:value pairs).
When not communicating with the SmartClient server rpcResponse.data
contains the raw HTTP response body. See rpcRequest.useSimpleHttp
,
rpcRequest.serverOutputAsString, rpcRequest.evalResult
in
the SmartClient Reference for details.
RPCRequest.setData(JavaScriptObject)
,
RPCRequest.setData(Map)
,
RPCRequest.setData(com.smartgwt.client.data.Record)
,
RPCRequest.setData(String)