Adds (unused by this patch, but needed in forthcoming history code)
RecordImpl#isFuture.
Review at http://gwt-code-reviews.appspot.com/760801
Review by: amitmanjhi@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8528 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/RecordImpl.java b/user/src/com/google/gwt/requestfactory/client/impl/RecordImpl.java
index d823962..8f6deb3 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/RecordImpl.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/RecordImpl.java
@@ -34,10 +34,12 @@
*/
public class RecordImpl implements Record {
private final RecordJsoImpl jso;
+ private final boolean isFuture;
private DeltaValueStoreJsonImpl deltaValueStore;
- protected RecordImpl(RecordJsoImpl record) {
+ protected RecordImpl(RecordJsoImpl record, boolean isFuture) {
this.jso = record;
+ this.isFuture = isFuture;
deltaValueStore = null;
}
@@ -72,6 +74,10 @@
return deltaValueStore.isChanged();
}
+ public boolean isFuture() {
+ return isFuture;
+ }
+
public <V> void set(Property<V> property, RecordImpl record, V value) {
if (deltaValueStore == null) {
throw new UnsupportedOperationException(
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/RecordSchema.java b/user/src/com/google/gwt/requestfactory/client/impl/RecordSchema.java
index 06560ed..df4939d 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/RecordSchema.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/RecordSchema.java
@@ -51,7 +51,11 @@
return allProperties;
}
- public abstract R create(RecordJsoImpl jso);
+ public final R create(RecordJsoImpl jso) {
+ return create(jso, false);
+ }
+
+ public abstract R create(RecordJsoImpl jso, boolean isFuture);
public abstract RecordChangedEvent<?, ?> createChangeEvent(Record record,
WriteOperation writeOperation);
@@ -62,6 +66,6 @@
return createChangeEvent(record, writeOperation);
}
+ // TODO(rjrjr) rename getProxyClass
public abstract Class<? extends Record> getToken();
-
}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
index 7b91595..fec42a5 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
@@ -47,6 +47,8 @@
*/
public abstract class RequestFactoryJsonImpl implements RequestFactory {
+ // TODO(amitmanjhi) Dump this and the one in DeltaValueStore in favor of
+ // RecordImpl#isFuture
static class FutureIdGenerator {
Set<Long> idsInTransit = new HashSet<Long>();
Long maxId = 1L;
@@ -65,9 +67,8 @@
}
}
- private static Logger logger =
- Logger.getLogger(RequestFactory.class.getName());
-
+ private static Logger logger = Logger.getLogger(RequestFactory.class.getName());
+
// A separate logger for wire activity, which does not get logged by the
// remote log handler, so we avoid infinite loops. All log messages that
// could happen every time a request is made from the server should be logged
@@ -88,21 +89,18 @@
public com.google.gwt.valuestore.shared.Record create(
Class<? extends Record> token, RecordToTypeMap recordToTypeMap) {
- Long futureId = futureIdGenerator.getFutureId();
RecordSchema<? extends Record> schema = recordToTypeMap.getType(token);
- RecordJsoImpl newRecord = RecordJsoImpl.create(futureId, INITIAL_VERSION,
- schema);
- RecordKey recordKey = new RecordKey(newRecord);
- creates.put(recordKey, newRecord);
- return schema.create(newRecord);
+ if (schema == null) {
+ throw new IllegalArgumentException("Unknown proxy type: " + token);
+ }
+ return createFuture(schema);
}
public void fire(final RequestObject<?> requestObject) {
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST,
GWT.getHostPageBaseURL() + RequestFactory.URL);
- builder.setHeader(
- "Content-Type", RequestFactory.JSON_CONTENT_TYPE_UTF8);
+ builder.setHeader("Content-Type", RequestFactory.JSON_CONTENT_TYPE_UTF8);
builder.setHeader("pageurl", Location.getHref());
builder.setRequestData(ClientRequestHelper.getRequestString(requestObject.getRequestData().getRequestMap(
((AbstractRequest) requestObject).deltaValueStore.toJson())));
@@ -124,8 +122,8 @@
// During the redirection for logging in, we get a response with no
// status code, but it's not an error, so we only log errors with
// bad status codes here.
- wireLogger.severe(SERVER_ERROR + " " + response.getStatusCode() +
- " " + response.getText());
+ wireLogger.severe(SERVER_ERROR + " " + response.getStatusCode() + " "
+ + response.getText());
}
postRequestEvent(State.RECEIVED, response);
}
@@ -137,7 +135,8 @@
builder.send();
postRequestEvent(State.SENT, null);
} catch (RequestException e) {
- wireLogger.log(Level.SEVERE, SERVER_ERROR + " (" + e.getMessage() + ")", e);
+ wireLogger.log(Level.SEVERE, SERVER_ERROR + " (" + e.getMessage() + ")",
+ e);
}
}
@@ -147,8 +146,8 @@
public void init(HandlerManager handlerManager) {
this.valueStore = new ValueStoreJsonImpl(handlerManager);
this.handlerManager = handlerManager;
- Logger.getLogger("").addHandler(new RequestFactoryLogHandler(
- this, Level.WARNING, wireLogger.getName()));
+ Logger.getLogger("").addHandler(
+ new RequestFactoryLogHandler(this, Level.WARNING, wireLogger.getName()));
logger.fine("Successfully initialized RequestFactory");
}
@@ -156,6 +155,16 @@
return valueStore;
}
+ private Record createFuture(
+ RecordSchema<? extends Record> schema) {
+ Long futureId = futureIdGenerator.getFutureId();
+ RecordJsoImpl newRecord = RecordJsoImpl.create(futureId, INITIAL_VERSION,
+ schema);
+ RecordKey recordKey = new RecordKey(newRecord);
+ creates.put(recordKey, newRecord);
+ return schema.create(newRecord);
+ }
+
private void postRequestEvent(State received, Response response) {
handlerManager.fireEvent(new RequestEvent(received, response));
}
diff --git a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
index 3d84718..b315688 100644
--- a/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
+++ b/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
@@ -197,10 +197,10 @@
recordImplTypeName));
sw.println();
- sw.println(String.format("private %s(RecordJsoImpl jso) {",
+ sw.println(String.format("private %s(RecordJsoImpl jso, boolean isFuture) {",
recordImplTypeName));
sw.indent();
- sw.println("super(jso);");
+ sw.println("super(jso, isFuture);");
sw.outdent();
sw.println("}");
@@ -716,10 +716,10 @@
sw.println();
sw.println("@Override");
- sw.println(String.format("public %s create(RecordJsoImpl jso) {",
+ sw.println(String.format("public %s create(RecordJsoImpl jso, boolean isFuture) {",
recordImplTypeName));
sw.indent();
- sw.println(String.format("return new %s(jso);", recordImplTypeName));
+ sw.println(String.format("return new %s(jso, isFuture);", recordImplTypeName));
sw.outdent();
sw.println("}");
diff --git a/user/test/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImplTest.java b/user/test/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImplTest.java
index 33ade39..9dd5fca 100644
--- a/user/test/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImplTest.java
+++ b/user/test/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImplTest.java
@@ -39,7 +39,7 @@
private class MyRecordImpl extends RecordImpl {
protected MyRecordImpl(RecordJsoImpl record) {
- super(record);
+ super(record, false);
}
}
diff --git a/user/test/com/google/gwt/requestfactory/client/impl/RecordJsoImplTest.java b/user/test/com/google/gwt/requestfactory/client/impl/RecordJsoImplTest.java
index 7a9635b..413899c 100644
--- a/user/test/com/google/gwt/requestfactory/client/impl/RecordJsoImplTest.java
+++ b/user/test/com/google/gwt/requestfactory/client/impl/RecordJsoImplTest.java
@@ -41,7 +41,7 @@
public void testEmptyCopy() {
RecordJsoImpl emptyCopy = RecordJsoImpl.emptyCopy(new RecordImpl(
- getPopulatedJso()));
+ getPopulatedJso(), false));
testMinimalJso(emptyCopy, SCHEMA_PRESENT);
}
diff --git a/user/test/com/google/gwt/requestfactory/client/impl/SimpleFooRecordImpl.java b/user/test/com/google/gwt/requestfactory/client/impl/SimpleFooRecordImpl.java
index 0430812..63b18d2 100644
--- a/user/test/com/google/gwt/requestfactory/client/impl/SimpleFooRecordImpl.java
+++ b/user/test/com/google/gwt/requestfactory/client/impl/SimpleFooRecordImpl.java
@@ -56,8 +56,8 @@
}
@Override
- public SimpleFooRecordImpl create(RecordJsoImpl jso) {
- return new SimpleFooRecordImpl(jso);
+ public SimpleFooRecordImpl create(RecordJsoImpl jso, boolean isFuture) {
+ return new SimpleFooRecordImpl(jso, isFuture);
}
@Override
@@ -74,8 +74,8 @@
public static final RecordSchema<SimpleFooRecordImpl> SCHEMA = new MySchema();
- private SimpleFooRecordImpl(RecordJsoImpl jso) {
- super(jso);
+ private SimpleFooRecordImpl(RecordJsoImpl jso, boolean isFuture) {
+ super(jso, isFuture);
}
public Boolean getBoolField() {