Revision: 8580
Author: [email protected]
Date: Thu Aug 19 13:24:10 2010
Log: Irrespective of the return type, all RF methods now go through the valueStore.
Added a bunch of missing @Override annotations, removed an unused method in
DeltaValueStoreJsonImpl, Confirmed that instance methods work, have side
effects, and the sync results returned are meaningful.

Patch by: amitmanjhi
Review by: cromwellian, rjrjr (TBR)

http://code.google.com/p/google-web-toolkit/source/detail?r=8580

Modified:
/trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigDecimalRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigIntegerRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBooleanRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractByteRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractCharacterRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDateRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDoubleRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractEnumRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractFloatRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractIntegerRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonListRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonObjectRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractLongRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractPrimitiveRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractShortRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractStringRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractVoidRequest.java /trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java /trunk/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java
 /trunk/user/src/com/google/gwt/requestfactory/shared/RequestData.java
 /trunk/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java
 /trunk/user/test/com/google/gwt/valuestore/server/SimpleFoo.java
 /trunk/user/test/com/google/gwt/valuestore/shared/SimpleFooRequest.java

=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigDecimalRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigDecimalRequest.java Thu Aug 19 13:24:10 2010
@@ -15,11 +15,10 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

 import java.math.BigDecimal;
-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -38,10 +37,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(new BigDecimal(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(new BigDecimal(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigIntegerRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBigIntegerRequest.java Thu Aug 19 13:24:10 2010
@@ -15,12 +15,11 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -39,10 +38,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(new BigDecimal(responseText).toBigInteger(),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+ receiver.onSuccess(new BigDecimal(responseText).toBigInteger(), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBooleanRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractBooleanRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Boolean.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Boolean.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractByteRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractByteRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Integer.valueOf(responseText).byteValue(),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+ receiver.onSuccess(Integer.valueOf(responseText).byteValue(), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractCharacterRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractCharacterRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(responseText.charAt(0),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(responseText.charAt(0), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDateRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDateRequest.java Thu Aug 19 13:24:10 2010
@@ -15,11 +15,10 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
 import java.util.Date;
+import java.util.Set;

 /**
  * <p>
@@ -38,10 +37,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(new Date(Long.valueOf(responseText)),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(new Date(Long.valueOf(responseText)), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDoubleRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractDoubleRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Double.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Double.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractEnumRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractEnumRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -42,13 +41,13 @@
     this.enumValues = enumValues;
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
+      Set<SyncResult> syncResults) {
     int ordinal = Integer.valueOf(responseText);
     for (E e : enumValues) {
       if (ordinal == e.ordinal()) {
-        receiver.onSuccess(ordinal,
-            Collections.<SyncResult> emptySet());
+        receiver.onSuccess(ordinal, syncResults);
       }
     }
throw new IllegalArgumentException("Invalid enum ordinal value " + ordinal);
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractFloatRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractFloatRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Float.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Float.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractIntegerRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractIntegerRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Integer.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Integer.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonListRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonListRequest.java Thu Aug 19 13:24:10 2010
@@ -15,15 +15,14 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArray;
 import com.google.gwt.requestfactory.shared.RecordListRequest;
 import com.google.gwt.valuestore.shared.Record;
 import com.google.gwt.valuestore.shared.SyncResult;

 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
+import java.util.Set;

 /**
  * <p>
@@ -50,7 +49,8 @@
     this.schema = schema;
   }

- public void handleResult(Object jsoResult, JavaScriptObject sideEffects) {
+  @Override
+  public void handleResult(Object jsoResult, Set<SyncResult> syncResults) {

     JsArray<RecordJsoImpl> valueJsos = (JsArray<RecordJsoImpl>) jsoResult;
     List<T> valueList = new ArrayList<T>(valueJsos.length());
@@ -62,6 +62,6 @@

     requestFactory.getValueStore().setRecords(valueJsos, requestFactory);

-    receiver.onSuccess(valueList, Collections.<SyncResult> emptySet());
+    receiver.onSuccess(valueList, syncResults);
   }
 }
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonObjectRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractJsonObjectRequest.java Thu Aug 19 13:24:10 2010
@@ -15,12 +15,11 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.requestfactory.shared.RecordRequest;
 import com.google.gwt.valuestore.shared.Record;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
* <p> <span style="color:red">Experimental API: This class is still under rapid
@@ -44,14 +43,15 @@
     this.schema = schema;
   }

- public void handleResult(Object jsoResult, JavaScriptObject sideEffects) {
+  @Override
+  public void handleResult(Object jsoResult, Set<SyncResult> syncResults) {

     RecordJsoImpl jso = (RecordJsoImpl) jsoResult;
     jso.setSchema(schema);

     requestFactory.getValueStore().setRecord(jso, requestFactory);

- receiver.onSuccess(schema.create(jso), Collections.<SyncResult>emptySet());
+    receiver.onSuccess(schema.create(jso), syncResults);
   }

 }
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractLongRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractLongRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Long.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Long.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractPrimitiveRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractPrimitiveRequest.java Thu Aug 19 13:24:10 2010
@@ -15,7 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.valuestore.shared.SyncResult;
+
+import java.util.Set;

 /**
  * <p>
@@ -36,10 +38,11 @@
     super(requestFactory);
   }

-  public void handleResult(Object result, JavaScriptObject sideEffects) {
-    handlePrimitiveResult(asString(result), sideEffects);
+  @Override
+  public void handleResult(Object result, Set<SyncResult> syncResults) {
+    handlePrimitiveResult(asString(result), syncResults);
   }

   protected abstract void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects);
-}
+      Set<SyncResult> syncResults);
+}
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequest.java Thu Aug 19 13:24:10 2010
@@ -20,6 +20,7 @@
 import com.google.gwt.requestfactory.shared.RequestObject;
 import com.google.gwt.valuestore.shared.Property;
 import com.google.gwt.valuestore.shared.Record;
+import com.google.gwt.valuestore.shared.SyncResult;

 import java.util.Collection;
 import java.util.Collections;
@@ -95,9 +96,10 @@
   }

   public void handleResponseText(String responseText) {
- RecordJsoImpl.JsonResults results = RecordJsoImpl.fromResults(responseText); + RecordJsoImpl.JsonResults results = RecordJsoImpl.fromResults(responseText);
     processRelated(results.getRelated());
-    handleResult(results.getResult(), results.getSideEffects());
+    handleResult(results.getResult(),
+        deltaValueStore.commit(results.getSideEffects()));
   }

   public boolean isChanged() {
@@ -128,7 +130,7 @@
   protected abstract R getThis();

   protected abstract void handleResult(Object result,
-      JavaScriptObject sideEffects);
+      Set<SyncResult> syncResults);

   protected native void processRelated(JavaScriptObject related) /*-{
     for(var recordKey in related) {
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractShortRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractShortRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(Short.valueOf(responseText),
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(Short.valueOf(responseText), syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractStringRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractStringRequest.java Thu Aug 19 13:24:10 2010
@@ -15,10 +15,9 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

-import java.util.Collections;
+import java.util.Set;

 /**
  * <p>
@@ -37,10 +36,10 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    receiver.onSuccess(responseText,
-        Collections.<SyncResult> emptySet());
+      Set<SyncResult> syncResults) {
+    receiver.onSuccess(responseText, syncResults);
   }

   @Override
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractVoidRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/AbstractVoidRequest.java Thu Aug 19 13:24:10 2010
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.requestfactory.client.impl;

-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.valuestore.shared.SyncResult;

 import java.util.Set;
@@ -37,9 +36,9 @@
     super(requestFactory);
   }

+  @Override
   public void handlePrimitiveResult(String responseText,
-      JavaScriptObject sideEffects) {
-    Set<SyncResult> syncResults = deltaValueStore.commit(sideEffects);
+      Set<SyncResult> syncResults) {
     receiver.onSuccess(null, syncResults);
   }

=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java Thu Aug 19 13:24:10 2010
@@ -55,12 +55,6 @@
       }
     }-*/;

- private static native JavaScriptObject getJsoResponse(String response) /*-{
-      // TODO: clean and optimize this.
-      eval("xyz=" + response);
-      return xyz["sideEffects"];
-    }-*/;
-
     protected ReturnRecord() {
     }

=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java Thu Aug 19 13:24:10 2010
@@ -697,16 +697,17 @@
     JSONObject envelop = new JSONObject();
     if (result instanceof List<?>) {
envelop.put(RequestData.RESULT_TOKEN, toJsonArray(operation, result));
-      envelop.put("sideEffects", sideEffects);
+      envelop.put(RequestData.SIDE_EFFECTS_TOKEN, sideEffects);
       return envelop;
     } else if (result instanceof Number || result instanceof Enum
         || result instanceof String || result instanceof Date
         || result instanceof Character || result instanceof Boolean) {
       envelop.put(RequestData.RESULT_TOKEN, result);
+      envelop.put(RequestData.SIDE_EFFECTS_TOKEN, sideEffects);
     } else {
       JSONObject jsonObject = toJsonObject(operation, result);
       envelop.put(RequestData.RESULT_TOKEN, jsonObject);
-      envelop.put("sideEffects", sideEffects);
+      envelop.put(RequestData.SIDE_EFFECTS_TOKEN, sideEffects);
       return envelop;
     }
     envelop.put(RequestData.RELATED_TOKEN, encodeRelatedObjectsToJson());
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/shared/RequestData.java Wed Aug 18 08:38:13 2010 +++ /trunk/user/src/com/google/gwt/requestfactory/shared/RequestData.java Thu Aug 19 13:24:10 2010
@@ -42,6 +42,8 @@

   public static final String RELATED_TOKEN = "related";

+  public static final String SIDE_EFFECTS_TOKEN = "sideEffects";
+
   // TODO: non-final is a hack for now.
   private String operation;
   private final Object[] parameters;
=======================================
--- /trunk/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/test/com/google/gwt/valuestore/client/RequestFactoryTest.java Thu Aug 19 13:24:10 2010
@@ -20,6 +20,7 @@
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.requestfactory.shared.Receiver;
 import com.google.gwt.requestfactory.shared.RequestObject;
+import com.google.gwt.valuestore.shared.Record;
 import com.google.gwt.valuestore.shared.SimpleBarRecord;
 import com.google.gwt.valuestore.shared.SimpleFooRecord;
 import com.google.gwt.valuestore.shared.SimpleRequestFactory;
@@ -142,4 +143,48 @@
           }
         });
   }
-}
+
+  /*
+ * tests that (a) any method can have a side effect that is handled correctly. (b)
+   * instance methods are handled correctly.
+   */
+  public void testMethodWithSideEffects() {
+ final SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class);
+    HandlerManager hm = new HandlerManager(null);
+    req.init(hm);
+    delayTestFinish(5000);
+
+    req.simpleFooRequest().findSimpleFooById(999L).fire(
+        new Receiver<SimpleFooRecord>() {
+
+          public void onSuccess(SimpleFooRecord newFoo,
+              Set<SyncResult> syncResults) {
+ final RequestObject<Long> fooReq = req.simpleFooRequest().countSimpleFooWithUserNameSideEffect(
+                newFoo);
+            newFoo = fooReq.edit(newFoo);
+            newFoo.setUserName("Ray");
+            fooReq.fire(new Receiver<Long>() {
+ public void onSuccess(Long response, Set<SyncResult> syncResults) {
+                assertEquals(new Long(1L), response);
+                // confirm that there was a sideEffect.
+                assertEquals(1, syncResults.size());
+ SyncResult syncResultArray[] = syncResults.toArray(new SyncResult[0]);
+                assertFalse(syncResultArray[0].hasViolations());
+                assertNull(syncResultArray[0].getFutureId());
+                Record record = syncResultArray[0].getRecord();
+                assertEquals(new Long(999L), record.getId());
+ // confirm that the instance method did have the desired sideEffect.
+                req.simpleFooRequest().findSimpleFooById(999L).fire(
+                    new Receiver<SimpleFooRecord>() {
+                      public void onSuccess(SimpleFooRecord finalFoo,
+                          Set<SyncResult> syncResults) {
+                        assertEquals("Ray", finalFoo.getUserName());
+                        finishTest();
+                      }
+                    });
+              }
+            });
+          }
+        });
+  }
+}
=======================================
--- /trunk/user/test/com/google/gwt/valuestore/server/SimpleFoo.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/test/com/google/gwt/valuestore/server/SimpleFoo.java Thu Aug 19 13:24:10 2010
@@ -51,6 +51,11 @@
   public static SimpleFoo getSingleton() {
     return singleton;
   }
+
+  public Long countSimpleFooWithUserNameSideEffect() {
+    singleton.setUserName(userName);
+    return 1L;
+  }

   public String hello(SimpleBar bar) {
     return "Greetings " + bar.getUserName() + " from " + getUserName();
=======================================
--- /trunk/user/test/com/google/gwt/valuestore/shared/SimpleFooRequest.java Wed Aug 18 19:31:21 2010 +++ /trunk/user/test/com/google/gwt/valuestore/shared/SimpleFooRequest.java Thu Aug 19 13:24:10 2010
@@ -28,6 +28,9 @@
 public interface SimpleFooRequest {
   RequestObject<Long> countSimpleFoo();

+  @Instance
+ RequestObject<Long> countSimpleFooWithUserNameSideEffect(SimpleFooRecord record);
+
   RecordListRequest<SimpleFooRecord> findAll();

   RecordRequest<SimpleFooRecord> findSimpleFooById(Long id);

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to