Commitng cherry-picks r8599 Get rid of yellow background during cell selection r8603 Snip a stray logging line r8607 Add more tests to check that relationships are persisted correctly r8608 Ignoring __gwt_ObjectId in AbstractRequest#processRelated r8609 Snip stray debugging println. Patch by: amitmanjhi git-svn-id: https://google-web-toolkit.googlecode.com/svn/branches/2.1M3@8611 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/branch-info.txt b/branch-info.txt index d3fe056..f36f674 100644 --- a/branch-info.txt +++ b/branch-info.txt
@@ -7,3 +7,10 @@ /branches/2.1M3/ was created (r8601) as a straight copy from /trunk/@r8598 Merge: +Cherry-picks + r8599 Get rid of yellow background during cell selection + r8603 Snip a stray logging line + r8607 Add more tests to check that relationships are persisted correctly + r8608 Ignoring __gwt_ObjectId in AbstractRequest#processRelated + r8609 Snip stray debugging println. +commited as
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java b/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java index 833fbb1..8cf92e8 100644 --- a/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java +++ b/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java
@@ -79,10 +79,10 @@ /** * @deprecated use {@link #with(String...)} instead. * @param properties - * @return */ + @Deprecated public R forProperties(Collection<Property<?>> properties) { - for (Property p : properties) { + for (Property<?> p : properties) { with(p.getName()); } return getThis(); @@ -134,6 +134,8 @@ protected native void processRelated(JavaScriptObject related) /*-{ for(var recordKey in related) { + // Workaround for __gwt_ObjectId appearing in Chrome dev mode. + if (!related.hasOwnProperty(recordKey)) continue; var schemaAndId = recordKey.split(/-/, 2); var jso = related[recordKey]; this.@com.google.gwt.requestfactory.client.impl.AbstractRequest::setSchemaAndRecord(Ljava/lang/String;Lcom/google/gwt/requestfactory/client/impl/RecordJsoImpl;)(schemaAndId[0], jso);
diff --git a/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java b/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java index 8597d49..564a3d1 100644 --- a/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java +++ b/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java
@@ -247,7 +247,6 @@ int ordinal = Integer.parseInt(parameterValue); Method valuesMethod = parameterType.getDeclaredMethod("values", new Class[0]); - log.severe("Type is " + parameterType + " valuesMethod " + valuesMethod); if (valuesMethod != null) { valuesMethod.setAccessible(true);
diff --git a/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java b/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java index c3d1fb2..72dc579 100644 --- a/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java +++ b/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java
@@ -66,7 +66,6 @@ ensureConfig(); String jsonRequestString = RPCServletUtils.readContent( request, JSON_CONTENT_TYPE, JSON_CHARSET); - System.err.println(jsonRequestString); response.setStatus(HttpServletResponse.SC_OK); PrintWriter writer = response.getWriter();
diff --git a/user/src/com/google/gwt/user/cellview/client/CellTree.css b/user/src/com/google/gwt/user/cellview/client/CellTree.css index 4ea469f..ee00850 100644 --- a/user/src/com/google/gwt/user/cellview/client/CellTree.css +++ b/user/src/com/google/gwt/user/cellview/client/CellTree.css
@@ -28,7 +28,7 @@ */ .keyboardSelectedItem { - background-color: #ffff00; +/* background-color: #ffff00; */ } .openItem {
diff --git a/user/src/com/google/gwt/user/cellview/client/CellTreeClean.css b/user/src/com/google/gwt/user/cellview/client/CellTreeClean.css index 4c84711..5c393c7 100644 --- a/user/src/com/google/gwt/user/cellview/client/CellTreeClean.css +++ b/user/src/com/google/gwt/user/cellview/client/CellTreeClean.css
@@ -28,7 +28,7 @@ */ .keyboardSelectedItem { - background-color: #ffff00; +/* background-color: #ffff00; */ } .openItem {
diff --git a/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java b/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java index 651a46a..3ac6136 100644 --- a/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java +++ b/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java
@@ -33,11 +33,182 @@ */ public class RequestFactoryTest extends GWTTestCase { + /* + * 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() { + final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class); + HandlerManager hm = new HandlerManager(null); + req.init(hm); + delayTestFinish(5000); + + req.simpleBarRequest().findSimpleBarById(999L).fire( + new Receiver<SimpleBarRecord>() { + public void onSuccess(final SimpleBarRecord barRecord, + Set<SyncResult> syncResults) { + req.simpleFooRequest().findSimpleFooById(999L).fire( + new Receiver<SimpleFooRecord>() { + public void onSuccess(SimpleFooRecord fooRecord, + Set<SyncResult> syncResults) { + RequestObject<Void> updReq = req.simpleFooRequest().persist( + fooRecord); + fooRecord = updReq.edit(fooRecord); + fooRecord.setBarField(barRecord); + updReq.fire(new Receiver<Void>() { + public void onSuccess(Void response, + Set<SyncResult> syncResults) { + finishTest(); + } + }); + } + }); + } + }); + } + + /* + * Find Entity Create Entity2 Relate Entity2 to Entity Persist Entity + */ + public void testPersistExistingEntityNewRelation() { + final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class); + HandlerManager hm = new HandlerManager(null); + req.init(hm); + delayTestFinish(5000); + + SimpleBarRecord newBar = (SimpleBarRecord) req.create(SimpleBarRecord.class); + + final RequestObject<Void> barReq = req.simpleBarRequest().persist(newBar); + newBar = barReq.edit(newBar); + newBar.setUserName("Amit"); + + final SimpleBarRecord finalNewBar = newBar; + req.simpleFooRequest().findSimpleFooById(999L).fire( + new Receiver<SimpleFooRecord>() { + public void onSuccess(SimpleFooRecord response, + Set<SyncResult> syncResults) { + RequestObject<Void> fooReq = req.simpleFooRequest().persist( + response); + response = fooReq.edit(response); + response.setBarField(finalNewBar); + fooReq.fire(new Receiver<Void>() { + public void onSuccess(Void response, Set<SyncResult> syncResults) { + req.simpleFooRequest().findSimpleFooById(999L).with( + "barField.userName").fire(new Receiver<SimpleFooRecord>() { + public void onSuccess(SimpleFooRecord finalFooRecord, + Set<SyncResult> syncResults) { + // barReq hasn't been persisted, so old value + assertEquals("FOO", + finalFooRecord.getBarField().getUserName()); + finishTest(); + } + + }); + } + }); + } + }); + } + + /* + * Find Entity2 Create Entity, Persist Entity Relate Entity2 to Entity Persist + * Entity + */ + public void testPersistNewEntityExistingRelation() { + final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class); + HandlerManager hm = new HandlerManager(null); + req.init(hm); + delayTestFinish(5000); + SimpleFooRecord newFoo = (SimpleFooRecord) req.create(SimpleFooRecord.class); + + final RequestObject<Void> fooReq = req.simpleFooRequest().persist(newFoo); + + newFoo = fooReq.edit(newFoo); + newFoo.setUserName("Ray"); + + final SimpleFooRecord finalFoo = newFoo; + req.simpleBarRequest().findSimpleBarById(999L).fire( + new Receiver<SimpleBarRecord>() { + public void onSuccess(SimpleBarRecord response, + Set<SyncResult> syncResults) { + finalFoo.setBarField(response); + fooReq.fire(new Receiver<Void>() { + public void onSuccess(Void response, Set<SyncResult> syncResults) { + req.simpleFooRequest().findSimpleFooById(999L).fire( + new Receiver<SimpleFooRecord>() { + public void onSuccess(SimpleFooRecord finalFooRecord, + Set<SyncResult> syncResults) { + // newFoo hasn't been persisted, so userName is the old value. + assertEquals("GWT", finalFooRecord.getUserName()); + finishTest(); + } + + }); + } + }); + } + }); + } + + /* + * Create Entity, Persist Entity Create Entity2, Perist Entity2 relate Entity2 + * to Entity Persist + */ + public void testPersistNewEntityNewRelation() { + final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class); + HandlerManager hm = new HandlerManager(null); + req.init(hm); + delayTestFinish(5000); + SimpleFooRecord newFoo = (SimpleFooRecord) req.create(SimpleFooRecord.class); + SimpleBarRecord newBar = (SimpleBarRecord) req.create(SimpleBarRecord.class); + + final RequestObject<SimpleFooRecord> fooReq = req.simpleFooRequest().persistAndReturnSelf( + newFoo); + + newFoo = fooReq.edit(newFoo); + newFoo.setUserName("Ray"); + + final RequestObject<SimpleBarRecord> barReq = req.simpleBarRequest().persistAndReturnSelf( + newBar); + newBar = barReq.edit(newBar); + newBar.setUserName("Amit"); + + fooReq.fire(new Receiver<SimpleFooRecord>() { + public void onSuccess(final SimpleFooRecord persistedFoo, + Set<SyncResult> syncResult) { + barReq.fire(new Receiver<SimpleBarRecord>() { + public void onSuccess(final SimpleBarRecord persistedBar, + Set<SyncResult> syncResults) { + assertEquals("Ray", persistedFoo.getUserName()); + final RequestObject<Void> fooReq2 = req.simpleFooRequest().persist( + persistedFoo); + SimpleFooRecord editablePersistedFoo = fooReq2.edit(persistedFoo); + editablePersistedFoo.setBarField(persistedBar); + fooReq2.fire(new Receiver<Void>() { + public void onSuccess(Void response, Set<SyncResult> syncResults) { + req.simpleFooRequest().findSimpleFooById(999L).with( + "barField.userName").fire(new Receiver<SimpleFooRecord>() { + public void onSuccess(SimpleFooRecord finalFooRecord, + Set<SyncResult> syncResults) { + assertEquals("Amit", + finalFooRecord.getBarField().getUserName()); + finishTest(); + } + + }); + } + }); + } + }); + } + }); + } + public void testPersistRelation() { final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class); HandlerManager hm = new HandlerManager(null); req.init(hm); - delayTestFinish(500000); + delayTestFinish(5000); SimpleFooRecord rayFoo = req.create(SimpleFooRecord.class); final RequestObject<SimpleFooRecord> persistRay = req.simpleFooRequest().persistAndReturnSelf(
diff --git a/user/test/com/google/gwt/valuestore/shared/SimpleBarRequest.java b/user/test/com/google/gwt/valuestore/shared/SimpleBarRequest.java index 1b2bccd..4839ce8 100644 --- a/user/test/com/google/gwt/valuestore/shared/SimpleBarRequest.java +++ b/user/test/com/google/gwt/valuestore/shared/SimpleBarRequest.java
@@ -16,6 +16,7 @@ package com.google.gwt.valuestore.shared; import com.google.gwt.requestfactory.shared.Instance; +import com.google.gwt.requestfactory.shared.RecordListRequest; import com.google.gwt.requestfactory.shared.RecordRequest; import com.google.gwt.requestfactory.shared.RequestObject; import com.google.gwt.requestfactory.shared.Service; @@ -26,9 +27,15 @@ @Service(com.google.gwt.valuestore.server.SimpleBar.class) public interface SimpleBarRequest { + RequestObject<Long> countSimpleBar(); + + RecordListRequest<SimpleBarRecord> findAll(); + + RecordRequest<SimpleBarRecord> findSimpleBarById(Long id); + @Instance RequestObject<Void> persist(SimpleBarRecord record); - + @Instance RecordRequest<SimpleBarRecord> persistAndReturnSelf(SimpleBarRecord record); }