Revision: 8836
Author: amitman...@google.com
Date: Tue Sep 21 17:22:41 2010
Log: Repeats the existing tests with String id and confirm that the tests
pass.
Patch by: amitmanjhi
Review by: rjrjr (desk review)
http://code.google.com/p/google-web-toolkit/source/detail?r=8836
Added:
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryStringTest.java
/trunk/user/test/com/google/gwt/requestfactory/server/SimpleFooString.java
/trunk/user/test/com/google/gwt/requestfactory/shared/BaseFooProxy.java
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooStringProxy.java
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooStringRequest.java
Modified:
/trunk/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTestBase.java
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooProxy.java
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleRequestFactory.java
=======================================
--- /dev/null
+++
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryStringTest.java
Tue Sep 21 17:22:41 2010
@@ -0,0 +1,694 @@
+/*
+ * Copyright 2010 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.requestfactory.client;
+
+import com.google.gwt.requestfactory.client.impl.ProxyImpl;
+import com.google.gwt.requestfactory.shared.Receiver;
+import com.google.gwt.requestfactory.shared.RequestObject;
+import com.google.gwt.requestfactory.shared.ServerFailure;
+import com.google.gwt.requestfactory.shared.SimpleBarProxy;
+import com.google.gwt.requestfactory.shared.SimpleFooStringProxy;
+import com.google.gwt.requestfactory.shared.Violation;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Tests for {...@link com.google.gwt.requestfactory.shared.RequestFactory}.
+ */
+public class RequestFactoryStringTest extends RequestFactoryTestBase {
+ /*
+ * DO NOT USE finishTest(). Instead, call finishTestAndReset();
+ */
+
+ private class FailFixAndRefire<T> extends Receiver<T> {
+
+ private final SimpleFooStringProxy proxy;
+ private final RequestObject<T> request;
+ private boolean voidReturnExpected;
+
+ FailFixAndRefire(SimpleFooStringProxy proxy, RequestObject<T> request)
{
+ this.proxy = request.edit(proxy);
+ this.request = request;
+ }
+
+ @Override
+ public void onSuccess(T response) {
+ /*
+ * Make sure your class path includes:
+ *
+ * tools/lib/apache/log4j/log4j-1.2.16.jar
+ * tools/lib/hibernate/validator/hibernate-validator-4.1.0.Final.jar
+ * tools/lib/slf4j/slf4j-api/slf4j-api-1.6.1.jar
+ * tools/lib/slf4j/slf4j-log4j12/slf4j-log4j12-1.6.1.jar
+ */
+ fail("Violations expected (you might be missing some jars, "
+ + "see the comment above this line)");
+ }
+
+ @Override
+ public void onViolation(Set<Violation> errors) {
+
+ // size violation expected
+
+ assertEquals(1, errors.size());
+ Violation error = errors.iterator().next();
+ assertEquals("userName", error.getPath());
+ assertEquals("size must be between 3 and 30", error.getMessage());
+ assertEquals(proxy.stableId(), error.getProxyId());
+
+ // Now re-used the request to fix the edit
+
+ proxy.setUserName("long enough");
+ request.fire(new Receiver<T>() {
+ @Override
+ public void onSuccess(T response) {
+ if (voidReturnExpected) {
+ assertNull(response);
+ } else {
+ assertEquals(proxy.stableId(),
+ ((SimpleFooStringProxy) response).stableId());
+ }
+ finishTestAndReset();
+ }
+ });
+ }
+
+ void doVoidTest() {
+ voidReturnExpected = true;
+ doTest();
+ }
+
+ void doTest() {
+ proxy.setUserName("a"); // too short
+ request.fire(this);
+ }
+ }
+
+ @Override
+ public String getModuleName() {
+ return "com.google.gwt.requestfactory.RequestFactorySuite";
+ }
+
+ public void testDummyCreate() {
+ delayTestFinish(5000);
+
+ final SimpleFooStringProxy foo =
req.create(SimpleFooStringProxy.class);
+ Object futureId = foo.getId();
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+ RequestObject<SimpleFooStringProxy> fooReq =
req.simpleFooStringRequest().persistAndReturnSelf(
+ foo);
+ fooReq.fire(new Receiver<SimpleFooStringProxy>() {
+
+ @Override
+ public void onSuccess(final SimpleFooStringProxy returned) {
+ Object futureId = foo.getId();
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+
+ checkStableIdEquals(foo, returned);
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testDummyCreateBar() {
+ delayTestFinish(5000);
+
+ final SimpleBarProxy foo = req.create(SimpleBarProxy.class);
+ Object futureId = foo.getId();
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+ RequestObject<SimpleBarProxy> fooReq =
req.simpleBarRequest().persistAndReturnSelf(
+ foo);
+ fooReq.fire(new Receiver<SimpleBarProxy>() {
+
+ @Override
+ public void onSuccess(final SimpleBarProxy returned) {
+ Object futureId = foo.getId();
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+
+ checkStableIdEquals(foo, returned);
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testFetchEntity() {
+ delayTestFinish(5000);
+ req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy response) {
+ assertEquals(42, (int) response.getIntId());
+ assertEquals("GWT", response.getUserName());
+ assertEquals(8L, (long) response.getLongField());
+
assertEquals(com.google.gwt.requestfactory.shared.SimpleEnum.FOO,
+ response.getEnumField());
+ assertEquals(null, response.getBarField());
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testFetchEntityWithRelation() {
+ delayTestFinish(5000);
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").with("barField").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy response) {
+ assertEquals(42, (int) response.getIntId());
+ assertEquals("GWT", response.getUserName());
+ assertEquals(8L, (long) response.getLongField());
+
assertEquals(com.google.gwt.requestfactory.shared.SimpleEnum.FOO,
+ response.getEnumField());
+ assertNotNull(response.getBarField());
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testGetEventBus() {
+ assertEquals(eventBus, req.getEventBus());
+ }
+
+ public void testGetListStringId() {
+ delayTestFinish(5000);
+
+ // String ids
+ req.simpleBarRequest().findAll().fire(new
Receiver<List<SimpleBarProxy>>() {
+ @Override
+ public void onSuccess(List<SimpleBarProxy> response) {
+ assertEquals(2, response.size());
+ for (SimpleBarProxy bar : response) {
+ assertNotNull(bar.stableId());
+ finishTestAndReset();
+ }
+ }
+ });
+ }
+
+ public void testGetListLongId() {
+ delayTestFinish(5000);
+
+ // Long ids
+ req.simpleFooStringRequest().findAll().with("barField.userName").fire(
+ new Receiver<List<SimpleFooStringProxy>>() {
+ @Override
+ public void onSuccess(List<SimpleFooStringProxy> response) {
+ assertEquals(1, response.size());
+ for (SimpleFooStringProxy foo : response) {
+ assertNotNull(foo.stableId());
+ assertEquals("FOO", foo.getBarField().getUserName());
+ finishTestAndReset();
+ }
+ }
+ });
+ }
+
+ /*
+ * tests that (a) any method can have a side effect that is handled
correctly.
+ * (b) instance methods are handled correctly and (c) a request cannot be
+ * reused after a successful response is received. (Yet?)
+ */
+ public void testMethodWithSideEffects() {
+ delayTestFinish(5000);
+
+ req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+
+ @Override
+ public void onSuccess(SimpleFooStringProxy newFoo) {
+ final RequestObject<Long> mutateRequest =
req.simpleFooStringRequest().countSimpleFooWithUserNameSideEffect(
+ newFoo);
+ newFoo = mutateRequest.edit(newFoo);
+ newFoo.setUserName("Ray");
+ mutateRequest.fire(new Receiver<Long>() {
+ @Override
+ public void onSuccess(Long response) {
+ assertCannotFire(mutateRequest);
+ assertEquals(new Long(1L), response);
+ // TODO: listen to create events also
+
+ // confirm that the instance method did have the desired
+ // sideEffect.
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy finalFoo)
{
+ assertEquals("Ray", finalFoo.getUserName());
+ finishTestAndReset();
+ }
+ });
+ }
+
+ });
+
+ try {
+ newFoo.setUserName("Barney");
+ fail();
+ } catch (IllegalStateException e) {
+ /* pass, cannot change a request that is in flight */
+ }
+ }
+ });
+ }
+
+ /*
+ * TODO: all these tests should check the final values. It will be easy
when
+ * we have better persistence than the singleton pattern.
+ */
+ public void testPersistExistingEntityExistingRelation() {
+ delayTestFinish(5000);
+
+ req.simpleBarRequest().findSimpleBarById("999L").fire(
+ new Receiver<SimpleBarProxy>() {
+ @Override
+ public void onSuccess(final SimpleBarProxy barProxy) {
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy fooProxy) {
+ RequestObject<Void> updReq =
req.simpleFooStringRequest().persist(
+ fooProxy);
+ fooProxy = updReq.edit(fooProxy);
+ fooProxy.setBarField(barProxy);
+ updReq.fire(new Receiver<Void>() {
+ @Override
+ public void onSuccess(Void response) {
+
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ /*
+ * Find Entity Create Entity2 Relate Entity2 to Entity Persist Entity
+ */
+ public void testPersistExistingEntityNewRelation() {
+ delayTestFinish(5000);
+
+ // Make a new bar
+ SimpleBarProxy makeABar = req.create(SimpleBarProxy.class);
+ RequestObject<SimpleBarProxy> persistRequest =
req.simpleBarRequest().persistAndReturnSelf(
+ makeABar);
+ makeABar = persistRequest.edit(makeABar);
+ makeABar.setUserName("Amit");
+
+ persistRequest.fire(new Receiver<SimpleBarProxy>() {
+ @Override
+ public void onSuccess(final SimpleBarProxy persistedBar) {
+
+ // It was made, now find a foo to assign it to
+ req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy response) {
+
+ // Found the foo, edit it
+ RequestObject<Void> fooReq =
req.simpleFooStringRequest().persist(
+ response);
+ response = fooReq.edit(response);
+ response.setBarField(persistedBar);
+ fooReq.fire(new Receiver<Void>() {
+ @Override
+ public void onSuccess(Void response) {
+
+ // Foo was persisted, fetch it again check the goods
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").with(
+ "barField.userName").fire(
+ new Receiver<SimpleFooStringProxy>() {
+
+ // Here it is
+ @Override
+ public void onSuccess(SimpleFooStringProxy
finalFooProxy) {
+ assertEquals("Amit",
+ finalFooProxy.getBarField().getUserName());
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ /*
+ * Find Entity2 Create Entity, Persist Entity Relate Entity2 to Entity
Persist
+ * Entity
+ */
+ public void testPersistNewEntityExistingRelation() {
+ delayTestFinish(5000);
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+
+ final RequestObject<Void> fooReq =
req.simpleFooStringRequest().persist(newFoo);
+
+ newFoo = fooReq.edit(newFoo);
+ newFoo.setUserName("Ray");
+
+ final SimpleFooStringProxy finalFoo = newFoo;
+ req.simpleBarRequest().findSimpleBarById("999L").fire(
+ new Receiver<SimpleBarProxy>() {
+ @Override
+ public void onSuccess(SimpleBarProxy response) {
+ finalFoo.setBarField(response);
+ fooReq.fire(new Receiver<Void>() {
+ @Override
+ public void onSuccess(Void response) {
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy
finalFooProxy) {
+ // newFoo hasn't been persisted, so userName is
the old
+ // value.
+ assertEquals("GWT", finalFooProxy.getUserName());
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ /*
+ * Create Entity, Persist Entity Create Entity2, Perist Entity2 relate
Entity2
+ * to Entity Persist
+ */
+ public void testPersistNewEntityNewRelation() {
+ delayTestFinish(5000);
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+ SimpleBarProxy newBar = req.create(SimpleBarProxy.class);
+
+ final RequestObject<SimpleFooStringProxy> fooReq =
req.simpleFooStringRequest().persistAndReturnSelf(
+ newFoo);
+
+ newFoo = fooReq.edit(newFoo);
+ newFoo.setUserName("Ray");
+
+ final RequestObject<SimpleBarProxy> barReq =
req.simpleBarRequest().persistAndReturnSelf(
+ newBar);
+ newBar = barReq.edit(newBar);
+ newBar.setUserName("Amit");
+
+ fooReq.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(final SimpleFooStringProxy persistedFoo) {
+ barReq.fire(new Receiver<SimpleBarProxy>() {
+ @Override
+ public void onSuccess(final SimpleBarProxy persistedBar) {
+ assertEquals("Ray", persistedFoo.getUserName());
+ final RequestObject<Void> fooReq2 =
req.simpleFooStringRequest().persist(
+ persistedFoo);
+ SimpleFooStringProxy editablePersistedFoo =
fooReq2.edit(persistedFoo);
+ editablePersistedFoo.setBarField(persistedBar);
+ fooReq2.fire(new Receiver<Void>() {
+ @Override
+ public void onSuccess(Void response) {
+
req.simpleFooStringRequest().findSimpleFooStringById("999x").with(
+ "barField.userName").fire(new
Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy
finalFooProxy) {
+ assertEquals("Amit",
+ finalFooProxy.getBarField().getUserName());
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ public void testPersistRecursiveRelation() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy rayFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<SimpleFooStringProxy> persistRay =
req.simpleFooStringRequest().persistAndReturnSelf(
+ rayFoo);
+ rayFoo = persistRay.edit(rayFoo);
+ rayFoo.setUserName("Ray");
+ rayFoo.setFooField(rayFoo);
+ persistRay.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(final SimpleFooStringProxy persistedRay) {
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testPersistRelation() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy rayFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<SimpleFooStringProxy> persistRay =
req.simpleFooStringRequest().persistAndReturnSelf(
+ rayFoo);
+ rayFoo = persistRay.edit(rayFoo);
+ rayFoo.setUserName("Ray");
+
+ persistRay.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(final SimpleFooStringProxy persistedRay) {
+ SimpleBarProxy amitBar = req.create(SimpleBarProxy.class);
+ final RequestObject<SimpleBarProxy> persistAmit =
req.simpleBarRequest().persistAndReturnSelf(
+ amitBar);
+ amitBar = persistAmit.edit(amitBar);
+ amitBar.setUserName("Amit");
+
+ persistAmit.fire(new Receiver<SimpleBarProxy>() {
+ @Override
+ public void onSuccess(SimpleBarProxy persistedAmit) {
+
+ final RequestObject<SimpleFooStringProxy> persistRelationship
= req.simpleFooStringRequest().persistAndReturnSelf(
+ persistedRay).with("barField");
+ SimpleFooStringProxy newRec =
persistRelationship.edit(persistedRay);
+ newRec.setBarField(persistedAmit);
+
+ persistRelationship.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy relatedRay) {
+ assertEquals("Amit",
relatedRay.getBarField().getUserName());
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+
+ public void testProxysAsInstanceMethodParams() {
+ delayTestFinish(5000);
+ req.simpleFooStringRequest().findSimpleFooStringById("999x").fire(
+ new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy response) {
+ SimpleBarProxy bar = req.create(SimpleBarProxy.class);
+ RequestObject<String> helloReq =
req.simpleFooStringRequest().hello(
+ response, bar);
+ bar = helloReq.edit(bar);
+ bar.setUserName("BAR");
+ helloReq.fire(new Receiver<String>() {
+ @Override
+ public void onSuccess(String response) {
+ assertEquals("Greetings BAR from GWT", response);
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+
+ public void testServerFailure() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<SimpleFooStringProxy> persistRequest =
req.simpleFooStringRequest().persistAndReturnSelf(
+ newFoo);
+
+ final SimpleFooStringProxy mutableFoo = persistRequest.edit(newFoo);
+ mutableFoo.setPleaseCrash(42); // 42 is the crash causing magic number
+
+ persistRequest.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onFailure(ServerFailure error) {
+ assertEquals("Server Error: THIS EXCEPTION IS EXPECTED BY A TEST",
+ error.getMessage());
+ assertEquals("", error.getExceptionType());
+ assertEquals("", error.getStackTraceString());
+
+ // Now show that we can fix the error and try again with the same
+ // request
+
+ mutableFoo.setPleaseCrash(24); // Only 42 crashes
+ persistRequest.fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy response) {
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void onSuccess(SimpleFooStringProxy response) {
+ fail("Failure expected but onSuccess() was called");
+ }
+
+ @Override
+ public void onViolation(Set<Violation> errors) {
+ fail("Failure expected but onViolation() was called");
+ }
+ });
+ }
+
+ public void testStableId() {
+ delayTestFinish(5000);
+
+ final SimpleFooStringProxy foo =
req.create(SimpleFooStringProxy.class);
+ final Object futureId = foo.getId();
+ assertTrue(((ProxyImpl) foo).isFuture());
+ RequestObject<SimpleFooStringProxy> fooReq =
req.simpleFooStringRequest().persistAndReturnSelf(
+ foo);
+
+ final SimpleFooStringProxy newFoo = fooReq.edit(foo);
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+ assertEquals(futureId, newFoo.getId());
+ assertTrue(((ProxyImpl) newFoo).isFuture());
+
+ newFoo.setUserName("GWT basic user");
+ fooReq.fire(new Receiver<SimpleFooStringProxy>() {
+
+ @Override
+ public void onSuccess(final SimpleFooStringProxy returned) {
+ assertEquals(futureId, foo.getId());
+ assertTrue(((ProxyImpl) foo).isFuture());
+ assertEquals(futureId, newFoo.getId());
+ assertTrue(((ProxyImpl) newFoo).isFuture());
+
+ assertFalse(((ProxyImpl) returned).isFuture());
+
+ checkStableIdEquals(foo, returned);
+ checkStableIdEquals(newFoo, returned);
+
+ RequestObject<SimpleFooStringProxy> editRequest =
req.simpleFooStringRequest().persistAndReturnSelf(
+ returned);
+ final SimpleFooStringProxy editableFoo =
editRequest.edit(returned);
+ editableFoo.setUserName("GWT power user");
+ editRequest.fire(new Receiver<SimpleFooStringProxy>() {
+
+ @Override
+ public void onSuccess(SimpleFooStringProxy returnedAfterEdit) {
+ checkStableIdEquals(editableFoo, returnedAfterEdit);
+ assertEquals(returnedAfterEdit.getId(), returned.getId());
+ finishTestAndReset();
+ }
+ });
+ }
+ });
+ }
+
+ public void testViolationAbsent() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<Void> fooReq =
req.simpleFooStringRequest().persist(newFoo);
+
+ newFoo = fooReq.edit(newFoo);
+ newFoo.setUserName("Amit"); // will not cause violation.
+
+ fooReq.fire(new Receiver<Void>() {
+ @Override
+ public void onSuccess(Void ignore) {
+ finishTestAndReset();
+ }
+ });
+ }
+
+ public void testViolationsOnCreate() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<SimpleFooStringProxy> create =
req.simpleFooStringRequest().persistAndReturnSelf(
+ newFoo);
+ new FailFixAndRefire<SimpleFooStringProxy>(newFoo, create).doTest();
+ }
+
+ public void testViolationsOnCreateVoidReturn() {
+ delayTestFinish(5000);
+
+ SimpleFooStringProxy newFoo = req.create(SimpleFooStringProxy.class);
+ final RequestObject<Void> create =
req.simpleFooStringRequest().persist(newFoo);
+ new FailFixAndRefire<Void>(newFoo, create).doVoidTest();
+ }
+
+ public void testViolationsOnEdit() {
+ delayTestFinish(5000);
+
+ fooCreationRequest().fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy returned) {
+ RequestObject<SimpleFooStringProxy> editRequest =
req.simpleFooStringRequest().persistAndReturnSelf(
+ returned);
+ new FailFixAndRefire<SimpleFooStringProxy>(returned,
editRequest).doTest();
+ }
+ });
+ }
+
+ public void testViolationsOnEditVoidReturn() {
+ delayTestFinish(5000);
+
+ fooCreationRequest().fire(new Receiver<SimpleFooStringProxy>() {
+ @Override
+ public void onSuccess(SimpleFooStringProxy returned) {
+ RequestObject<Void> editRequest =
req.simpleFooStringRequest().persist(
+ returned);
+ new FailFixAndRefire<Void>(returned, editRequest).doVoidTest();
+ }
+ });
+ }
+
+ private void assertCannotFire(final RequestObject<Long> mutateRequest) {
+ try {
+ mutateRequest.fire(new Receiver<Long>() {
+ public void onSuccess(Long response) {
+ fail("Should not be called");
+ }
+ });
+ fail("Expected IllegalStateException");
+ } catch (IllegalStateException e) {
+ /* cannot reuse a successful request, mores the pity */
+ }
+ }
+
+ private RequestObject<SimpleFooStringProxy> fooCreationRequest() {
+ SimpleFooStringProxy originalFoo =
req.create(SimpleFooStringProxy.class);
+ final RequestObject<SimpleFooStringProxy> fooReq =
req.simpleFooStringRequest().persistAndReturnSelf(
+ originalFoo);
+ originalFoo = fooReq.edit(originalFoo);
+ originalFoo.setUserName("GWT User");
+ return fooReq;
+ }
+}
=======================================
--- /dev/null
+++
/trunk/user/test/com/google/gwt/requestfactory/server/SimpleFooString.java
Tue Sep 21 17:22:41 2010
@@ -0,0 +1,395 @@
+/*
+ * Copyright 2010 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.requestfactory.server;
+
+import com.google.gwt.requestfactory.shared.Id;
+import com.google.gwt.requestfactory.shared.SimpleEnum;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.constraints.Size;
+
+/**
+ * Domain object for SimpleFooStringRequest. Ugly copy of SimpleFoo, just
+ * changes id to String.
+ */
+public class SimpleFooString {
+ /**
+ * DO NOT USE THIS UGLY HACK DIRECTLY! Call {...@link #get} instead.
+ */
+ private static SimpleFooString jreTestSingleton = new SimpleFooString();
+
+ private static Long nextId = 1L;
+
+ public static Long countSimpleFoo() {
+ return 1L;
+ }
+
+ public static List<SimpleFooString> findAll() {
+ return Collections.singletonList(get());
+ }
+
+ public static SimpleFooString findSimpleFooString(String id) {
+ return findSimpleFooStringById(id);
+ }
+
+ public static SimpleFooString findSimpleFooStringById(String id) {
+ get().setId(id);
+ return get();
+ }
+
+ public static synchronized SimpleFooString get() {
+ HttpServletRequest req = RequestFactoryServlet.getThreadLocalRequest();
+ if (req == null) {
+ // May be in a JRE test case, use the singleton
+ return jreTestSingleton;
+ } else {
+ /*
+ * This will not behave entirely correctly unless we have a servlet
filter
+ * that doesn't allow any requests to be processed unless they're
+ * associated with an existing session.
+ */
+ SimpleFooString value = (SimpleFooString)
req.getSession().getAttribute(
+ SimpleFooString.class.getCanonicalName());
+ if (value == null) {
+ value = reset();
+ }
+ return value;
+ }
+ }
+
+ public static SimpleFooString getSingleton() {
+ return get();
+ }
+
+ public static synchronized SimpleFooString reset() {
+ SimpleFooString instance = new SimpleFooString();
+ HttpServletRequest req = RequestFactoryServlet.getThreadLocalRequest();
+ if (req == null) {
+ jreTestSingleton = instance;
+ } else {
+
req.getSession().setAttribute(SimpleFooString.class.getCanonicalName(),
+ instance);
+ }
+ return instance;
+ }
+
+ @SuppressWarnings("unused")
+ private static Integer privateMethod() {
+ return 0;
+ }
+
+ @Id
+ private String id = "1x";
+
+ Integer version = 1;
+
+ @Size(min = 3, max = 30)
+ private String userName;
+ private String password;
+
+ private Character charField;
+ private Long longField;
+
+ private BigDecimal bigDecimalField;
+
+ private BigInteger bigIntField;
+ private Integer intId = -1;
+ private Short shortField;
+
+ private Byte byteField;
+
+ private Date created;
+ private Double doubleField;
+
+ private Float floatField;
+
+ private SimpleEnum enumField;
+ private Boolean boolField;
+
+ private Boolean otherBoolField;
+ private Integer pleaseCrashField;
+
+ private SimpleBar barField;
+ private SimpleFooString fooField;
+
+ private String nullField;
+ private SimpleBar barNullField;
+
+ public SimpleFooString() {
+ intId = 42;
+ version = 1;
+ userName = "GWT";
+ longField = 8L;
+ enumField = SimpleEnum.FOO;
+ created = new Date();
+ barField = SimpleBar.getSingleton();
+ boolField = true;
+ nullField = null;
+ barNullField = null;
+ pleaseCrashField = 0;
+ }
+
+ public Long countSimpleFooWithUserNameSideEffect() {
+ get().setUserName(userName);
+ return 1L;
+ }
+
+ public SimpleBar getBarField() {
+ return barField;
+ }
+
+ public SimpleBar getBarNullField() {
+ return barNullField;
+ }
+
+ /**
+ * @return the bigDecimalField
+ */
+ public BigDecimal getBigDecimalField() {
+ return bigDecimalField;
+ }
+
+ /**
+ * @return the bigIntegerField
+ */
+ public BigInteger getBigIntField() {
+ return bigIntField;
+ }
+
+ public Boolean getBoolField() {
+ return boolField;
+ }
+
+ /**
+ * @return the byteField
+ */
+ public Byte getByteField() {
+ return byteField;
+ }
+
+ /**
+ * @return the charField
+ */
+ public Character getCharField() {
+ return charField;
+ }
+
+ public Date getCreated() {
+ return created;
+ }
+
+ /**
+ * @return the doubleField
+ */
+ public Double getDoubleField() {
+ return doubleField;
+ }
+
+ public SimpleEnum getEnumField() {
+ return enumField;
+ }
+
+ /**
+ * @return the floatField
+ */
+ public Float getFloatField() {
+ return floatField;
+ }
+
+ public SimpleFooString getFooField() {
+ return fooField;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public Integer getIntId() {
+ return intId;
+ }
+
+ public Long getLongField() {
+ return longField;
+ }
+
+ public String getNullField() {
+ return nullField;
+ }
+
+ /**
+ * @return the otherBoolField
+ */
+ public Boolean getOtherBoolField() {
+ return otherBoolField;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public Integer getPleaseCrash() {
+ return pleaseCrashField;
+ }
+
+ /**
+ * @return the shortField
+ */
+ public Short getShortField() {
+ return shortField;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public Integer getVersion() {
+ return version;
+ }
+
+ public String hello(SimpleBar bar) {
+ return "Greetings " + bar.getUserName() + " from " + getUserName();
+ }
+
+ public void persist() {
+ setId(nextId++ + "x");
+ }
+
+ public SimpleFooString persistAndReturnSelf() {
+ persist();
+ return this;
+ }
+
+ public void setBarField(SimpleBar barField) {
+ this.barField = barField;
+ }
+
+ public void setBarNullField(SimpleBar barNullField) {
+ this.barNullField = barNullField;
+ }
+
+ /**
+ * @param bigDecimalField the bigDecimalField to set
+ */
+ public void setBigDecimalField(BigDecimal bigDecimalField) {
+ this.bigDecimalField = bigDecimalField;
+ }
+
+ /**
+ * @param bigIntegerField the bigIntegerField to set
+ */
+ public void setBigIntField(BigInteger bigIntegerField) {
+ this.bigIntField = bigIntegerField;
+ }
+
+ public void setBoolField(Boolean bool) {
+ boolField = bool;
+ }
+
+ /**
+ * @param byteField the byteField to set
+ */
+ public void setByteField(Byte byteField) {
+ this.byteField = byteField;
+ }
+
+ /**
+ * @param charField the charField to set
+ */
+ public void setCharField(Character charField) {
+ this.charField = charField;
+ }
+
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ /**
+ * @param doubleField the doubleField to set
+ */
+ public void setDoubleField(Double doubleField) {
+ this.doubleField = doubleField;
+ }
+
+ public void setEnumField(SimpleEnum enumField) {
+ this.enumField = enumField;
+ }
+
+ /**
+ * @param floatField the floatField to set
+ */
+ public void setFloatField(Float floatField) {
+ this.floatField = floatField;
+ }
+
+ public void setFooField(SimpleFooString fooField) {
+ this.fooField = fooField;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public void setIntId(Integer id) {
+ this.intId = id;
+ }
+
+ public void setLongField(Long longField) {
+ this.longField = longField;
+ }
+
+ public void setNullField(String nullField) {
+ this.nullField = nullField;
+ }
+
+ /**
+ * @param otherBoolField the otherBoolField to set
+ */
+ public void setOtherBoolField(Boolean otherBoolField) {
+ this.otherBoolField = otherBoolField;
+ }
+
+ public void setPleaseCrash(Integer crashIf42) {
+ if (crashIf42 == 42) {
+ throw new UnsupportedOperationException("THIS EXCEPTION IS EXPECTED
BY A TEST");
+ }
+ pleaseCrashField = crashIf42;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ /**
+ * @param shortField the shortField to set
+ */
+ public void setShortField(Short shortField) {
+ this.shortField = shortField;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public void setVersion(Integer version) {
+ this.version = version;
+ }
+}
=======================================
--- /dev/null
+++ /trunk/user/test/com/google/gwt/requestfactory/shared/BaseFooProxy.java
Tue Sep 21 17:22:41 2010
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2010 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.requestfactory.shared;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
+/**
+ * A simple proxy used for testing. Has an int field and date field. Add
other
+ * data types as their support gets built in.
+ */
+public interface BaseFooProxy extends EntityProxy {
+
+ SimpleBarProxy getBarField();
+
+ SimpleBarProxy getBarNullField();
+
+ BigDecimal getBigDecimalField();
+
+ BigInteger getBigIntField();
+
+ Boolean getBoolField();
+
+ Byte getByteField();
+
+ Character getCharField();
+
+ Date getCreated();
+
+ Double getDoubleField();
+
+ SimpleEnum getEnumField();
+
+ Float getFloatField();
+
+ BaseFooProxy getFooField();
+
+ Integer getIntId();
+
+ Long getLongField();
+
+ String getNullField();
+
+ Boolean getOtherBoolField();
+
+ Integer getPleaseCrash();
+
+ String getPassword();
+
+ Short getShortField();
+
+ String getUserName();
+
+ void setBarField(SimpleBarProxy barField);
+
+ void setBarNullField(SimpleBarProxy barNullField);
+
+ void setBigDecimalField(BigDecimal d);
+
+ void setBigIntField(BigInteger i);
+
+ void setBoolField(Boolean boolField);
+
+ void setByteField(Byte b);
+
+ void setCharField(Character c);
+
+ void setCreated(Date created);
+
+ void setDoubleField(Double d);
+
+ void setFloatField(Float f);
+
+ void setFooField(BaseFooProxy fooField);
+
+ void setIntId(Integer intId);
+
+ void setLongField(Long longField);
+
+ void setNullField(String nullField);
+
+ void setOtherBoolField(Boolean boolField);
+
+ void setPassword(String password);
+
+ void setPleaseCrash(Integer dummy);
+
+ void setShortField(Short s);
+
+ void setUserName(String userName);
+
+}
=======================================
--- /dev/null
+++
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooStringProxy.java
Tue Sep 21 17:22:41 2010
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010 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.requestfactory.shared;
+
+import com.google.gwt.requestfactory.server.SimpleFooString;
+
+/**
+ * An extension of AbstractFooProxy with String id.
+ */
+...@proxyfor(SimpleFooString.class)
+public interface SimpleFooStringProxy extends BaseFooProxy {
+ String getId();
+
+ EntityProxyId<SimpleFooStringProxy> stableId();
+}
=======================================
--- /dev/null
+++
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooStringRequest.java
Tue Sep 21 17:22:41 2010
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2010 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.requestfactory.shared;
+
+/**
+ * Do nothing test interface.
+ */
+...@service(com.google.gwt.requestfactory.server.SimpleFooString.class)
+public interface SimpleFooStringRequest {
+ RequestObject<Long> countSimpleFoo();
+
+ @Instance
+ RequestObject<Long>
countSimpleFooWithUserNameSideEffect(SimpleFooStringProxy proxy);
+
+ ProxyListRequest<SimpleFooStringProxy> findAll();
+
+ ProxyRequest<SimpleFooStringProxy> findSimpleFooStringById(String id);
+
+ RequestObject<Integer> privateMethod();
+
+ @Instance
+ RequestObject<Void> persist(SimpleFooStringProxy proxy);
+
+ @Instance
+ ProxyRequest<SimpleFooStringProxy>
persistAndReturnSelf(SimpleFooStringProxy proxy);
+
+ RequestObject<Void> reset();
+
+ @Instance
+ RequestObject<String> hello(SimpleFooStringProxy instance,
SimpleBarProxy proxy);
+}
=======================================
--- /trunk/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
Fri Sep 17 05:56:27 2010
+++ /trunk/user/test/com/google/gwt/requestfactory/RequestFactorySuite.java
Tue Sep 21 17:22:41 2010
@@ -19,6 +19,7 @@
import com.google.gwt.requestfactory.client.EditorTest;
import com.google.gwt.requestfactory.client.FindServiceTest;
import
com.google.gwt.requestfactory.client.RequestFactoryExceptionHandlerTest;
+import com.google.gwt.requestfactory.client.RequestFactoryStringTest;
import com.google.gwt.requestfactory.client.RequestFactoryTest;
import
com.google.gwt.requestfactory.client.impl.DeltaValueStoreJsonImplTest;
import com.google.gwt.requestfactory.client.impl.ProxyJsoImplTest;
@@ -38,6 +39,7 @@
suite.addTestSuite(ValueStoreJsonImplTest.class);
suite.addTestSuite(DeltaValueStoreJsonImplTest.class);
suite.addTestSuite(RequestFactoryTest.class);
+ suite.addTestSuite(RequestFactoryStringTest.class);
suite.addTestSuite(RequestFactoryExceptionHandlerTest.class);
suite.addTestSuite(FindServiceTest.class);
return suite;
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
Tue Sep 21 13:40:35 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
Tue Sep 21 17:22:41 2010
@@ -16,7 +16,6 @@
package com.google.gwt.requestfactory.client;
import com.google.gwt.requestfactory.client.impl.ProxyImpl;
-import com.google.gwt.requestfactory.shared.EntityProxy;
import com.google.gwt.requestfactory.shared.Receiver;
import com.google.gwt.requestfactory.shared.RequestObject;
import com.google.gwt.requestfactory.shared.ServerFailure;
@@ -188,7 +187,9 @@
assertEquals(eventBus, req.getEventBus());
}
- public void testGetList() {
+ public void testGetListStringId() {
+ delayTestFinish(5000);
+
// String ids
req.simpleBarRequest().findAll().fire(new
Receiver<List<SimpleBarProxy>>() {
@Override
@@ -196,9 +197,14 @@
assertEquals(2, response.size());
for (SimpleBarProxy bar : response) {
assertNotNull(bar.stableId());
+ finishTestAndReset();
}
}
});
+ }
+
+ public void testGetListLongId() {
+ delayTestFinish(5000);
// Long ids
req.simpleFooRequest().findAll().with("barField.userName").fire(
@@ -208,7 +214,8 @@
assertEquals(1, response.size());
for (SimpleFooProxy foo : response) {
assertNotNull(foo.stableId());
- assertEquals("GWT", foo.getBarField().getUserName());
+ assertEquals("FOO", foo.getBarField().getUserName());
+ finishTestAndReset();
}
}
});
@@ -675,17 +682,6 @@
/* cannot reuse a successful request, mores the pity */
}
}
-
- private void checkStableIdEquals(EntityProxy expected,
- EntityProxy actual) {
- assertNotSame(expected.stableId(), actual.stableId());
- assertEquals(expected.stableId(), actual.stableId());
- assertEquals(expected.stableId().hashCode(),
actual.stableId().hashCode());
-
- // No assumptions about the proxy objects (being proxies and all)
- assertNotSame(expected, actual);
- assertFalse(expected.equals(actual));
- }
private RequestObject<SimpleFooProxy> fooCreationRequest() {
SimpleFooProxy originalFoo = req.create(SimpleFooProxy.class);
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTestBase.java
Sun Sep 19 10:42:32 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTestBase.java
Tue Sep 21 17:22:41 2010
@@ -19,6 +19,7 @@
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.requestfactory.shared.EntityProxy;
import com.google.gwt.requestfactory.shared.Receiver;
import com.google.gwt.requestfactory.shared.SimpleRequestFactory;
@@ -41,22 +42,41 @@
}
protected void finishTestAndReset() {
- final boolean[] reallyDone = {false, false};
+ final boolean[] reallyDone = {false, false, false};
req.simpleFooRequest().reset().fire(new Receiver<Void>() {
public void onSuccess(Void response) {
reallyDone[0] = true;
- if (reallyDone[0] && reallyDone[1]) {
+ if (reallyDone[0] && reallyDone[1] && reallyDone[2]) {
finishTest();
}
}
});
- req.simpleBarRequest().reset().fire(new Receiver<Void>() {
+ req.simpleFooStringRequest().reset().fire(new Receiver<Void>() {
public void onSuccess(Void response) {
reallyDone[1] = true;
- if (reallyDone[0] && reallyDone[1]) {
+ if (reallyDone[0] && reallyDone[1] && reallyDone[2]) {
finishTest();
}
}
});
+ req.simpleBarRequest().reset().fire(new Receiver<Void>() {
+ public void onSuccess(Void response) {
+ reallyDone[2] = true;
+ if (reallyDone[0] && reallyDone[1] && reallyDone[2]) {
+ finishTest();
+ }
+ }
+ });
+ }
+
+ protected void checkStableIdEquals(EntityProxy expected,
+ EntityProxy actual) {
+ assertNotSame(expected.stableId(), actual.stableId());
+ assertEquals(expected.stableId(), actual.stableId());
+ assertEquals(expected.stableId().hashCode(),
actual.stableId().hashCode());
+
+ // No assumptions about the proxy objects (being proxies and all)
+ assertNotSame(expected, actual);
+ assertFalse(expected.equals(actual));
}
}
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooProxy.java
Tue Sep 21 12:24:16 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleFooProxy.java
Tue Sep 21 17:22:41 2010
@@ -17,95 +17,12 @@
import com.google.gwt.requestfactory.server.SimpleFoo;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Date;
-
/**
- * A simple entity used for testing. Has an int field and date field. Add
other
- * data types as their support gets built in.
+ * A simple extension of AbstractFooProxy with Long id.
*/
@ProxyFor(SimpleFoo.class)
-public interface SimpleFooProxy extends EntityProxy {
+public interface SimpleFooProxy extends BaseFooProxy {
Long getId();
- SimpleBarProxy getBarField();
-
- SimpleBarProxy getBarNullField();
-
- BigDecimal getBigDecimalField();
-
- BigInteger getBigIntField();
-
- Boolean getBoolField();
-
- Byte getByteField();
-
- Character getCharField();
-
- Date getCreated();
-
- Double getDoubleField();
-
- SimpleEnum getEnumField();
-
- Float getFloatField();
-
- SimpleFooProxy getFooField();
-
- Integer getIntId();
-
- Long getLongField();
-
- String getNullField();
-
- Boolean getOtherBoolField();
-
- Integer getPleaseCrash();
-
- String getPassword();
-
- Short getShortField();
-
- String getUserName();
-
- void setBarField(SimpleBarProxy barField);
-
- void setBarNullField(SimpleBarProxy barNullField);
-
- void setBigDecimalField(BigDecimal d);
-
- void setBigIntField(BigInteger i);
-
- void setBoolField(Boolean boolField);
-
- void setByteField(Byte b);
-
- void setCharField(Character c);
-
- void setCreated(Date created);
-
- void setDoubleField(Double d);
-
- void setFloatField(Float f);
-
- void setFooField(SimpleFooProxy fooField);
-
- void setIntId(Integer intId);
-
- void setLongField(Long longField);
-
- void setNullField(String nullField);
-
- void setOtherBoolField(Boolean boolField);
-
- void setPassword(String password);
-
- void setPleaseCrash(Integer dummy);
-
- void setShortField(Short s);
-
- void setUserName(String userName);
-
EntityProxyId<SimpleFooProxy> stableId();
}
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleRequestFactory.java
Wed Aug 25 17:41:41 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/shared/SimpleRequestFactory.java
Tue Sep 21 17:22:41 2010
@@ -22,5 +22,7 @@
SimpleFooRequest simpleFooRequest();
+ SimpleFooStringRequest simpleFooStringRequest();
+
SimpleBarRequest simpleBarRequest();
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors