blob: 4d8220e3e3a43f90fe7f91be6eaf27b3191ba28f [file] [log] [blame]
/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.user.client.rpc;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestException;
/**
* Tests run-time serialization errors for GWT RPC.
*/
public class RunTimeSerializationErrorsTest extends RpcTestBase {
public static MixedSerializableEchoServiceAsync getService() {
MixedSerializableEchoServiceAsync service = GWT.create(MixedSerializableEchoService.class);
((ServiceDefTarget) service).setServiceEntryPoint(GWT.getModuleBaseURL()
+ "echo");
return service;
}
public void testBadSerialization1() {
delayTestFinishForRpc();
getService().echoVoid(new MixedSerializable.NonSerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
finishTest();
}
public void onSuccess(MixedSerializable result) {
fail("RPC request should have failed");
}
});
}
public void testBadSerialization2() {
final boolean[] callbackFired = new boolean[] {false};
Request req = getService().echoRequest(
new MixedSerializable.NonSerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
callbackFired[0] = true;
}
public void onSuccess(MixedSerializable result) {
fail("RPC request should have failed");
}
});
assertTrue(callbackFired[0]); // should have happened synchronously
assertFalse(req.isPending());
req.cancel();
}
public void testBadSerialization3() throws RequestException {
final boolean[] callbackFired = new boolean[] {false};
RequestBuilder rb = getService().echoRequestBuilder(
new MixedSerializable.NonSerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
assertFalse("callback fired twice", callbackFired[0]);
callbackFired[0] = true;
}
public void onSuccess(MixedSerializable result) {
fail("RPC request should have failed");
}
});
assertFalse(callbackFired[0]); // should fail when send() is called
rb.send();
assertTrue(callbackFired[0]); // should have happened now
}
public void testGoodSerialization1() {
delayTestFinishForRpc();
getService().echoVoid(new MixedSerializable.SerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
fail(caught.toString());
}
public void onSuccess(MixedSerializable result) {
finishTest();
}
});
}
public void testGoodSerialization2() {
delayTestFinishForRpc();
getService().echoRequest(new MixedSerializable.SerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
fail(caught.toString());
}
public void onSuccess(MixedSerializable result) {
finishTest();
}
});
}
public void testGoodSerialization3() {
delayTestFinishForRpc();
getService().echoVoid(new MixedSerializable.SerializableSub(),
new AsyncCallback<MixedSerializable>() {
public void onFailure(Throwable caught) {
fail(caught.toString());
}
public void onSuccess(MixedSerializable result) {
finishTest();
}
});
}
}