Revision: 8733
Author: amitman...@google.com
Date: Wed Sep 8 11:08:25 2010
Log: Added a way for EntityProxy to have a stable equality using
getStableId(). The
getStableId() is stable across creates and updates on the client.
Patch by: amitmanjhi
Suggested by: robertvawter
Review by: rjrjr (tbr)
http://code.google.com/p/google-web-toolkit/source/detail?r=8733
Added:
/trunk/user/src/com/google/gwt/requestfactory/client/impl/EntityProxyIdImpl.java
/trunk/user/src/com/google/gwt/requestfactory/shared/EntityProxyId.java
/trunk/user/test/com/google/gwt/requestfactory/client/impl/EntityProxyIdImplTest.java
Deleted:
/trunk/user/src/com/google/gwt/requestfactory/client/impl/EntityProxyId.java
/trunk/user/test/com/google/gwt/requestfactory/client/impl/EntityProxyIdTest.java
Modified:
/trunk/user/src/com/google/gwt/requestfactory/client/SyncResultImpl.java
/trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyImpl.java
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyJsoImpl.java
/trunk/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ValueStoreJsonImpl.java
/trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
/trunk/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
/trunk/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
/trunk/user/src/com/google/gwt/requestfactory/shared/SyncResult.java
/trunk/user/test/com/google/gwt/requestfactory/RequestFactoryJreSuite.java
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
=======================================
--- /dev/null
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/EntityProxyIdImpl.java
Wed Sep 8 11:08:25 2010
@@ -0,0 +1,121 @@
+/*
+ * 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.impl;
+
+import com.google.gwt.requestfactory.shared.EntityProxyId;
+
+/**
+ * <p>
+ * <span style="color:red">Experimental API: This class is still under
rapid
+ * development, and is very likely to be deleted. Use it at your own risk.
+ * </span>
+ * </p>
+ * The key used to store
+ * {...@link com.google.gwt.requestfactory.shared.EntityProxy Proxy}. This is
+ * stable across creates and updates on the client.
+ * <p>
+ * At all times, the id is not null. If the isFuture flag is true, the
+ * corresponding proxy has not been persisted and the id field is a
futureId. If
+ * the isFuture flag is false, the corresponding proxy has been persisted
and
+ * the id is the data-store id. The futureId is non-null if the entity was
+ * created on this client.
+ */
+final class EntityProxyIdImpl implements EntityProxyId {
+ static final String SEPARATOR = "---";
+
+ private static int hashCode(ProxySchema<?> proxySchema, boolean
hasFutureId, Object finalId) {
+ final int prime = 31;
+ int result = hasFutureId ? 0 : 1;
+ result = prime * result + finalId.hashCode();
+ result = prime * result + proxySchema.hashCode();
+ return result;
+ }
+
+ final ProxySchema<?> schema;
+ final Object id;
+ final Object futureId;
+
+ final boolean isFuture;
+
+ protected EntityProxyIdImpl(Object id, ProxySchema<?> schema,
+ boolean isFuture, Object futureId) {
+ assert id != null;
+ assert schema != null;
+ if (isFuture) {
+ assert futureId == null;
+ }
+
+ this.id = id;
+ this.schema = schema;
+ this.isFuture = isFuture;
+ this.futureId = futureId;
+ }
+
+ public String asString() {
+ if (isFuture) {
+ throw new IllegalStateException("Need to persist this proxy first");
+ }
+ return id + SEPARATOR + schema.getToken();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ EntityProxyIdImpl other = (EntityProxyIdImpl) obj;
+ if (!schema.equals(other.schema)) {
+ return false;
+ }
+ if (isFuture == other.isFuture && id.equals(other.id)) {
+ return true;
+ }
+ // one of the isFuture is false. check its futureId
+ if (!isFuture && other.id.equals(futureId)) {
+ return true;
+ }
+ if (!other.isFuture && id.equals(other.futureId)) {
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * This hashcode is complicated.
+ */
+ @Override
+ public int hashCode() {
+ if (futureId == null && !isFuture) {
+ // does not have a futureId.
+ return hashCode(schema, false, id);
+ }
+ // has futureId
+ return hashCode(schema, true, isFuture ? id : futureId);
+ }
+
+ @Override
+ public String toString() {
+ return "[RecordKey schema: " + schema.getClass().getName() + " id: " +
id
+ + " isFuture: " + (isFuture ? "true" : "false")
+ + (futureId != null ? ("futureId : " + futureId) : "") + "]";
+ }
+}
=======================================
--- /dev/null
+++ /trunk/user/src/com/google/gwt/requestfactory/shared/EntityProxyId.java
Wed Sep 8 11:08:25 2010
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+/**
+ * A stable, opaque id of an {...@link EntityProxy} that remains stable across
+ * updates, creates, deletes on the client.
+ * <p>
+ * In particular, an {...@link EntityProxy} foo that is yet to be persisted
and a
+ * copy of foo after being persisted have equal {...@link EntityProxyId}.
+ */
+public interface EntityProxyId {
+ /**
+ * Returns a stable string that remains the same across updates and
creates on
+ * the client. Note that calling this method on an instance that has not
been
+ * persisted throws IllegalStateException.
+ *
+ * @return a stable string that remains the same across updates and
creates on
+ * the client.
+ */
+ String asString();
+}
=======================================
--- /dev/null
+++
/trunk/user/test/com/google/gwt/requestfactory/client/impl/EntityProxyIdImplTest.java
Wed Sep 8 11:08:25 2010
@@ -0,0 +1,98 @@
+/*
+ * 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.impl;
+
+import com.google.gwt.requestfactory.shared.EntityProxy;
+import com.google.gwt.requestfactory.shared.EntityProxyChangedEvent;
+import com.google.gwt.requestfactory.shared.WriteOperation;
+
+import junit.framework.TestCase;
+
+/**
+ * Eponymous unit test.
+ */
+public class EntityProxyIdImplTest extends TestCase {
+
+ static class Schema1 extends ProxySchema<ProxyImpl> {
+ public Schema1() {
+ super("schemey");
+ }
+
+ @Override
+ public ProxyImpl create(ProxyJsoImpl jso, boolean isFuture) {
+ throw new UnsupportedOperationException("Auto-generated method
stub");
+ }
+
+ @Override
+ public EntityProxyChangedEvent<?, ?> createChangeEvent(EntityProxy
proxy,
+ WriteOperation writeOperation) {
+ throw new UnsupportedOperationException("Auto-generated method
stub");
+ }
+
+ @Override
+ public Class<? extends EntityProxy> getProxyClass() {
+ throw new UnsupportedOperationException("Auto-generated method
stub");
+ }
+ }
+
+ static class Schema2 extends Schema1 {
+ }
+
+ public void testEquals() {
+ EntityProxyIdImpl newKey1 = new EntityProxyIdImpl(1L, new Schema1(),
+ RequestFactoryJsonImpl.IS_FUTURE, null);
+
+ EntityProxyIdImpl anotherNewKey1 = new EntityProxyIdImpl(newKey1.id,
newKey1.schema,
+ newKey1.isFuture, null);
+ assertTrue(newKey1.equals(anotherNewKey1));
+ assertTrue(newKey1.hashCode() == anotherNewKey1.hashCode());
+
+ EntityProxyIdImpl newKey2 = new EntityProxyIdImpl((Long) newKey1.id +
1, newKey1.schema,
+ newKey1.isFuture, null);
+ assertFalse(newKey1.equals(newKey2));
+ assertFalse(newKey1.hashCode() == newKey2.hashCode());
+
+ EntityProxyIdImpl newKey1NoSchema = new EntityProxyIdImpl(newKey1.id,
+ new Schema2(), newKey1.isFuture, null);
+ assertFalse(newKey1.equals(newKey1NoSchema));
+ assertFalse(newKey1.hashCode() == newKey1NoSchema.hashCode());
+
+ EntityProxyIdImpl oldKey1 = new EntityProxyIdImpl(newKey1.id,
newKey1.schema,
+ !newKey1.isFuture, null);
+ assertFalse(newKey1.equals(oldKey1));
+ assertFalse(newKey1.hashCode() == oldKey1.hashCode());
+ }
+
+ public void testEqualsWithFuture() {
+ EntityProxyIdImpl newKey1 = new EntityProxyIdImpl(1L, new Schema1(),
+ RequestFactoryJsonImpl.IS_FUTURE, null);
+
+ EntityProxyIdImpl persistedNewKey1 = new EntityProxyIdImpl(1000L,
+ newKey1.schema, RequestFactoryJsonImpl.NOT_FUTURE, newKey1.id);
+ assertTrue(persistedNewKey1.equals(persistedNewKey1));
+ assertTrue(newKey1.equals(persistedNewKey1));
+ assertTrue(persistedNewKey1.equals(newKey1));
+ assertTrue(newKey1.hashCode() == persistedNewKey1.hashCode());
+
+ EntityProxyIdImpl anotherPersistedNewKey1 = new
EntityProxyIdImpl(1024L,
+ newKey1.schema, RequestFactoryJsonImpl.NOT_FUTURE,
+ (Long) newKey1.id + 1);
+ assertTrue(anotherPersistedNewKey1.equals(anotherPersistedNewKey1));
+ assertFalse(persistedNewKey1.equals(anotherPersistedNewKey1));
+ assertFalse(anotherPersistedNewKey1.equals(persistedNewKey1));
+ assertFalse(newKey1.hashCode() == anotherPersistedNewKey1.hashCode());
+ }
+}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/EntityProxyId.java
Thu Sep 2 20:54:55 2010
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.impl;
-
-/**
- * <p>
- * <span style="color:red">Experimental API: This class is still under
rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
- * The key used to store {...@link
com.google.gwt.requestfactory.shared.EntityProxy Proxy}.
- */
-class EntityProxyId {
- final ProxySchema<?> schema;
- final Long id;
- final boolean isFuture;
-
- EntityProxyId(ProxyImpl record) {
- this(record.getId(), record.getSchema(), record.isFuture());
- }
-
- EntityProxyId(ProxyJsoImpl record, boolean isFuture) {
- this(record.getId(), record.getSchema(), isFuture);
- }
-
- protected EntityProxyId(Long id, ProxySchema<?> schema, boolean
isFuture) {
- assert id != null;
- assert schema != null;
-
- this.id = id;
- this.schema = schema;
- this.isFuture = isFuture;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- EntityProxyId other = (EntityProxyId) obj;
- if (isFuture != other.isFuture) {
- return false;
- }
- if (!id.equals(other.id)) {
- return false;
- }
- if (!schema.equals(other.schema)) {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = (isFuture ? 0 : 1);
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((schema == null) ? 0 : schema.hashCode());
- return result;
- }
-
- @Override
- public String toString() {
- return "[RecordKey schema: " + schema.getClass().getName() + " id: " +
id
- + " isFuture: " + (isFuture ? "true" : "false") + "]";
- }
-}
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/client/impl/EntityProxyIdTest.java
Tue Sep 7 10:09:37 2010
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.impl;
-
-import com.google.gwt.requestfactory.shared.EntityProxy;
-import com.google.gwt.requestfactory.shared.EntityProxyChangedEvent;
-import com.google.gwt.requestfactory.shared.WriteOperation;
-
-import junit.framework.TestCase;
-
-/**
- * Eponymous unit test.
- */
-public class EntityProxyIdTest extends TestCase {
-
- static class Schema1 extends ProxySchema<ProxyImpl> {
- public Schema1() {
- super("schemey");
- }
-
- @Override
- public ProxyImpl create(ProxyJsoImpl jso, boolean isFuture) {
- throw new UnsupportedOperationException("Auto-generated method
stub");
- }
-
- @Override
- public EntityProxyChangedEvent<?, ?> createChangeEvent(EntityProxy
proxy,
- WriteOperation writeOperation) {
- throw new UnsupportedOperationException("Auto-generated method
stub");
- }
-
- @Override
- public Class<? extends EntityProxy> getProxyClass() {
- throw new UnsupportedOperationException("Auto-generated method
stub");
- }
- }
-
- static class Schema2 extends Schema1 {
- }
-
- public void testEquals() {
- EntityProxyId newKey1 = new EntityProxyId(1L, new Schema1(),
- RequestFactoryJsonImpl.IS_FUTURE);
-
- EntityProxyId anotherNewKey1 = new EntityProxyId(newKey1.id,
newKey1.schema,
- newKey1.isFuture);
- assertTrue(newKey1.equals(anotherNewKey1));
- assertTrue(newKey1.hashCode() == anotherNewKey1.hashCode());
-
- EntityProxyId newKey2 = new EntityProxyId(newKey1.id + 1,
newKey1.schema,
- newKey1.isFuture);
- assertFalse(newKey1.equals(newKey2));
- assertFalse(newKey1.hashCode() == newKey2.hashCode());
-
- EntityProxyId newKey1NoSchema = new EntityProxyId(newKey1.id,
- new Schema2(), newKey1.isFuture);
- assertFalse(newKey1.equals(newKey1NoSchema));
- assertFalse(newKey1.hashCode() == newKey1NoSchema.hashCode());
-
- EntityProxyId oldKey1 = new EntityProxyId(newKey1.id, newKey1.schema,
- !newKey1.isFuture);
- assertFalse(newKey1.equals(oldKey1));
- assertFalse(newKey1.hashCode() == oldKey1.hashCode());
- }
-}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/SyncResultImpl.java
Thu Sep 2 20:54:55 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/SyncResultImpl.java
Wed Sep 8 11:08:25 2010
@@ -32,15 +32,15 @@
private final EntityProxy record;
private final Map<String, String> violations;
- private final Long futureId;
-
- public SyncResultImpl(EntityProxy record, Map<String, String>
violations, Long futureId) {
+ private final Object futureId;
+
+ public SyncResultImpl(EntityProxy record, Map<String, String>
violations, Object futureId) {
this.record = record;
this.violations = violations;
this.futureId = futureId;
}
- public Long getFutureId() {
+ public Object getFutureId() {
return futureId;
}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/DeltaValueStoreJsonImpl.java
Wed Sep 8 11:08:25 2010
@@ -18,8 +18,9 @@
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.requestfactory.client.SyncResultImpl;
-import com.google.gwt.requestfactory.shared.Property;
import com.google.gwt.requestfactory.shared.EntityProxy;
+import com.google.gwt.requestfactory.shared.EntityProxyId;
+import com.google.gwt.requestfactory.shared.Property;
import com.google.gwt.requestfactory.shared.SyncResult;
import com.google.gwt.requestfactory.shared.WriteOperation;
@@ -162,23 +163,31 @@
}
for (Map.Entry<EntityProxyId, ProxyJsoImpl> entry :
creates.entrySet()) {
- final EntityProxyId futureKey = entry.getKey();
+ final EntityProxyIdImpl futureKey = (EntityProxyIdImpl)
entry.getKey();
// TODO change violationsMap to <Long, String>
Map<String, String> violations = violationsMap.get(futureKey.id);
assert violations != null;
if (violations == NULL_VIOLATIONS) {
Long datastoreId = futureToDatastoreId.get(futureKey.id);
assert datastoreId != null;
- final EntityProxyId key = new EntityProxyId(datastoreId,
futureKey.schema,
- RequestFactoryJsonImpl.NOT_FUTURE);
+
+ // populate the two maps first.
+ requestFactory.datastoreToFutureMap.put(datastoreId,
futureKey.schema, futureKey.id);
+ requestFactory.futureToDatastoreMap.put(futureKey.id,
datastoreId);
+ final EntityProxyIdImpl key = getPersistedProxyId(datastoreId,
futureKey.schema);
ProxyJsoImpl value = entry.getValue();
- value.set(EntityProxy.id, datastoreId);
+
+ // make a copy of value and set the id there.
+ // TODO (amitmanjhi): get all the data from the server.
+ ProxyJsoImpl copy = ProxyJsoImpl.emptyCopy(value);
+ copy.merge(value);
+ copy.set(EntityProxy.id, datastoreId);
+
ProxyJsoImpl masterRecord = master.records.get(key);
assert masterRecord == null;
- master.records.put(key, value);
- masterRecord = value;
- toRemove.add(new EntityProxyId(datastoreId, futureKey.schema,
- RequestFactoryJsonImpl.IS_FUTURE));
+
+ masterRecord = copy;
+ toRemove.add(key);
requestFactory.postChangeEvent(masterRecord,
WriteOperation.CREATE);
syncResults.add(makeSyncResult(masterRecord, null,
futureKey.id));
} else {
@@ -198,9 +207,8 @@
int length = deletedRecords.length();
for (int i = 0; i < length; i++) {
- final EntityProxyId key = new
EntityProxyId(deletedRecords.get(i).getId(),
- requestFactory.getSchema(deletedRecords.get(i).getSchema()),
- RequestFactoryJsonImpl.NOT_FUTURE);
+ final EntityProxyIdImpl key =
getPersistedProxyId(deletedRecords.get(i).getId(),
+ requestFactory.getSchema(deletedRecords.get(i).getSchema()));
Map<String, String> violations = violationsMap.get(key.id);
assert violations != null;
/*
@@ -210,7 +218,7 @@
* with update events.
*/
if (violations == NULL_VIOLATIONS) {
- requestFactory.postChangeEvent(ProxyJsoImpl.create(key.id, 1,
+ requestFactory.postChangeEvent(ProxyJsoImpl.create((Long)
key.id, 1,
key.schema, requestFactory), WriteOperation.DELETE);
}
ProxyJsoImpl masterRecord = master.records.get(key);
@@ -230,14 +238,13 @@
int length = updatedRecords.length();
for (int i = 0; i < length; i++) {
- final EntityProxyId key = new
EntityProxyId(updatedRecords.get(i).getId(),
- requestFactory.getSchema(updatedRecords.get(i).getSchema()),
- RequestFactoryJsonImpl.NOT_FUTURE);
+ final EntityProxyIdImpl key =
getPersistedProxyId(updatedRecords.get(i).getId(),
+ requestFactory.getSchema(updatedRecords.get(i).getSchema()));
Map<String, String> violations = violationsMap.get(key.id);
assert violations != null;
// post change events if no violations.
if (violations == NULL_VIOLATIONS) {
- requestFactory.postChangeEvent(ProxyJsoImpl.create(key.id, 1,
+ requestFactory.postChangeEvent(ProxyJsoImpl.create((Long)
key.id, 1,
key.schema, requestFactory), WriteOperation.UPDATE);
}
@@ -268,7 +275,7 @@
public <V> void set(Property<V> property, EntityProxy record, V value) {
checkArgumentsAndState(record, "set");
ProxyImpl recordImpl = (ProxyImpl) record;
- EntityProxyId recordKey = new EntityProxyId(recordImpl);
+ EntityProxyId recordKey = recordImpl.getStableId();
ProxyJsoImpl rawMasterRecord = master.records.get(recordKey);
WriteOperation priorOperation = operations.get(recordKey);
@@ -386,6 +393,13 @@
requestData.append("]");
return requestData.toString();
}
+
+ private EntityProxyIdImpl getPersistedProxyId(Long datastoreId,
+ ProxySchema<?> schema) {
+ return new EntityProxyIdImpl(datastoreId, schema,
+ RequestFactoryJsonImpl.NOT_FUTURE,
+ requestFactory.datastoreToFutureMap.get(datastoreId, schema));
+ }
private Map<EntityProxyId, ProxyJsoImpl> getRecordsMap(
WriteOperation writeOperation) {
@@ -446,7 +460,7 @@
}
private SyncResultImpl makeSyncResult(ProxyJsoImpl jso,
- Map<String, String> violations, Long futureId) {
+ Map<String, String> violations, Object futureId) {
return new SyncResultImpl(jso.getSchema().create(jso), violations,
futureId);
}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyImpl.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyImpl.java
Wed Sep 8 11:08:25 2010
@@ -15,6 +15,7 @@
*/
package com.google.gwt.requestfactory.client.impl;
+import com.google.gwt.requestfactory.shared.EntityProxyId;
import com.google.gwt.requestfactory.shared.Property;
import com.google.gwt.requestfactory.shared.PropertyReference;
import com.google.gwt.requestfactory.shared.EntityProxy;
@@ -34,7 +35,7 @@
*/
public class ProxyImpl implements EntityProxy {
- protected static String getUniqueId(Long id, boolean isFuture,
+ protected static String getWireFormatId(Long id, boolean isFuture,
ProxySchema<?> schema) {
return id + "-" + (isFuture ? "IS" : "NO") + "-" + schema.getToken();
}
@@ -82,13 +83,24 @@
return jso.getSchema();
}
- public String getUniqueId() {
- return getUniqueId(jso.getId(), isFuture, jso.getSchema());
+ public EntityProxyId getStableId() {
+ if (!isFuture) {
+ return new EntityProxyIdImpl(
+ getId(),
+ getSchema(),
+ false,
+ jso.getRequestFactory().datastoreToFutureMap.get(getId(),
getSchema()));
+ }
+ return new EntityProxyIdImpl(getId(), getSchema(), isFuture, null);
}
public Integer getVersion() {
return jso.getVersion();
}
+
+ public String getWireFormatId() {
+ return getWireFormatId(jso.getId(), isFuture, jso.getSchema());
+ }
public boolean isChanged() {
if (deltaValueStore == null) {
@@ -108,17 +120,12 @@
}
deltaValueStore.set(property, record, value);
}
-
- /*
- * TODO: this method is public for the time being. Will become
- * package-protected once {...@link RecordImpl} moves to the same package as
- * {...@link AbstractRequest}.
- */
- public void setDeltaValueStore(DeltaValueStoreJsonImpl deltaValueStore) {
- this.deltaValueStore = deltaValueStore;
- }
protected ValueStoreJsonImpl getValueStore() {
return jso.getRequestFactory().getValueStore();
}
-}
+
+ void setDeltaValueStore(DeltaValueStoreJsonImpl deltaValueStore) {
+ this.deltaValueStore = deltaValueStore;
+ }
+}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyJsoImpl.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ProxyJsoImpl.java
Wed Sep 8 11:08:25 2010
@@ -19,6 +19,7 @@
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.requestfactory.shared.EntityProxy;
+import com.google.gwt.requestfactory.shared.EntityProxyId;
import com.google.gwt.requestfactory.shared.EnumProperty;
import com.google.gwt.requestfactory.shared.Property;
import com.google.gwt.requestfactory.shared.PropertyReference;
@@ -178,7 +179,7 @@
assert schemaAndId.length == 2;
ProxySchema<?> schema =
getRequestFactory().getSchema(schemaAndId[0]);
return (V)
getRequestFactory().getValueStore().getRecordBySchemaAndId(schema,
- Long.valueOf(schemaAndId[1]));
+ Long.valueOf(schemaAndId[1]), getRequestFactory());
}
}
@@ -201,6 +202,10 @@
public final native ProxySchema<?> getSchema() /*-{
return this['__key'];
}-*/;
+
+ public final EntityProxyId getStableId() {
+ throw new IllegalArgumentException("Can't call stableId on the jso");
+ }
public final Integer getVersion() {
return this.get(version);
@@ -291,7 +296,7 @@
}
if (value instanceof ProxyImpl) {
- setString(property.getName(), ((ProxyImpl) value).getUniqueId());
+ setString(property.getName(), ((ProxyImpl) value).getWireFormatId());
return;
}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/RequestFactoryJsonImpl.java
Wed Sep 8 11:08:25 2010
@@ -24,13 +24,16 @@
import com.google.gwt.http.client.Response;
import com.google.gwt.requestfactory.client.RequestFactoryLogHandler;
import com.google.gwt.requestfactory.shared.EntityProxy;
+import com.google.gwt.requestfactory.shared.EntityProxyId;
import com.google.gwt.requestfactory.shared.RequestEvent;
+import com.google.gwt.requestfactory.shared.RequestEvent.State;
import com.google.gwt.requestfactory.shared.RequestFactory;
import com.google.gwt.requestfactory.shared.RequestObject;
import com.google.gwt.requestfactory.shared.WriteOperation;
-import com.google.gwt.requestfactory.shared.RequestEvent.State;
import com.google.gwt.user.client.Window.Location;
+import java.util.HashMap;
+import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -56,7 +59,39 @@
private static String SERVER_ERROR = "Server Error";
- private static final Integer INITIAL_VERSION = 1;
+ private final Integer initialVersion = 1;
+
+ /*
+ * Keeping these maps forever is not a desirable solution because of the
+ * memory overhead but need these if want to provide stable
{...@entityproxyid}.
+ *
+ * futureToDatastoreMap is currently not used, will be useful in find
requests.
+ */
+ final Map<Object, Object> futureToDatastoreMap = new HashMap<Object,
Object>();
+ final DataStoreToFutureMap datastoreToFutureMap = new
DataStoreToFutureMap();
+
+ final class DataStoreToFutureMap {
+
+ Map<ProxySchema<? extends ProxyImpl>, Map<Object, Object>> internalMap
= new HashMap<ProxySchema<? extends ProxyImpl>, Map<Object, Object>>();
+
+ /* returns the previous futureId, if any*/
+ Object put(Object datastoreId, ProxySchema<? extends ProxyImpl>
schema, Object futureId) {
+ Map<Object, Object> perSchemaMap = internalMap.get(schema);
+ if (perSchemaMap == null) {
+ perSchemaMap = new HashMap<Object, Object>();
+ internalMap.put(schema, perSchemaMap);
+ }
+ return perSchemaMap.put(datastoreId, futureId);
+ }
+
+ Object get(Object datastoreId, ProxySchema<? extends ProxyImpl>
schema) {
+ Map<Object, Object> perSchemaMap = internalMap.get(schema);
+ if (perSchemaMap == null) {
+ return null;
+ }
+ return perSchemaMap.get(datastoreId);
+ }
+ }
private long currentFutureId = 0;
@@ -144,7 +179,10 @@
}
return schema.getProxyClass();
}
-
+
+ /**
+ * TODO(amitmanjhi): remove this method, use getProxyId instead.
+ */
protected EntityProxy getProxy(String token, ProxyToTypeMap
recordToTypeMap) {
String[] bits = token.split("-");
if (bits.length < 2 || bits.length > 3) {
@@ -170,6 +208,31 @@
return schema.create(ProxyJsoImpl.create(id, -1, schema, this));
}
+ protected EntityProxyId getProxyId(String token, ProxyToTypeMap
recordToTypeMap) {
+ String[] bits = token.split(EntityProxyIdImpl.SEPARATOR);
+ if (bits.length != 2) {
+ return null;
+ }
+
+ ProxySchema<? extends EntityProxy> schema =
recordToTypeMap.getType(bits[1]);
+ if (schema == null) {
+ return null;
+ }
+
+ Long id = null;
+ try {
+ id = Long.valueOf(bits[0]);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+
+ Object futureId = datastoreToFutureMap.get(id, schema);
+ return new EntityProxyIdImpl(id, schema, false, futureId);
+ }
+
+ /*
+ * can this method use the EntityProxyIdImpl.asString() method?
+ */
protected String getToken(EntityProxy record, ProxyToTypeMap
recordToTypeMap) {
Class<? extends EntityProxy> proxyClass = ((ProxyImpl)
record).getSchema().getProxyClass();
String rtn = recordToTypeMap.getClassToken(proxyClass) + "-";
@@ -185,6 +248,9 @@
return valueStore;
}
+ /*
+ * use ProxyId instead here.
+ */
void postChangeEvent(ProxyJsoImpl newJsoRecord, WriteOperation op) {
/*
* Ensure event receivers aren't accidentally using cached info by
making an
@@ -198,7 +264,7 @@
private <R extends ProxyImpl> R createFuture(ProxySchema<R> schema) {
Long futureId = ++currentFutureId;
- ProxyJsoImpl newRecord = ProxyJsoImpl.create(futureId, INITIAL_VERSION,
+ ProxyJsoImpl newRecord = ProxyJsoImpl.create(futureId, initialVersion,
schema, this);
return schema.create(newRecord, IS_FUTURE);
}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ValueStoreJsonImpl.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/client/impl/ValueStoreJsonImpl.java
Wed Sep 8 11:08:25 2010
@@ -29,26 +29,27 @@
* </span>
* </p>
*/
-public class ValueStoreJsonImpl {
+class ValueStoreJsonImpl {
// package protected fields for use by DeltaValueStoreJsonImpl
- final Map<EntityProxyId, ProxyJsoImpl> records = new
HashMap<EntityProxyId, ProxyJsoImpl>();
-
- public EntityProxy getRecordBySchemaAndId(ProxySchema<?> schema,
- Long id) {
+ final Map<EntityProxyIdImpl, ProxyJsoImpl> records = new
HashMap<EntityProxyIdImpl, ProxyJsoImpl>();
+
+ EntityProxy getRecordBySchemaAndId(ProxySchema<?> schema, Long id,
+ RequestFactoryJsonImpl requestFactory) {
if (id == null) {
return null;
}
// TODO: pass isFuture to this method from decoding ID string
- EntityProxyId key = new EntityProxyId(id, schema, false);
+ EntityProxyIdImpl key = new EntityProxyIdImpl(id, schema, false,
+ requestFactory.datastoreToFutureMap.get(id, schema));
return schema.create(records.get(key));
}
- public void setProxy(ProxyJsoImpl newRecord) {
+ void setProxy(ProxyJsoImpl newRecord) {
setRecordInList(newRecord, 0, null);
}
- public void setRecords(JsArray<ProxyJsoImpl> newRecords) {
+ void setRecords(JsArray<ProxyJsoImpl> newRecords) {
for (int i = 0, l = newRecords.length(); i < l; i++) {
ProxyJsoImpl newRecord = newRecords.get(i);
setRecordInList(newRecord, i, newRecords);
@@ -57,8 +58,11 @@
private void setRecordInList(ProxyJsoImpl newJsoRecord, int i,
JsArray<ProxyJsoImpl> array) {
- EntityProxyId recordKey = new EntityProxyId(newJsoRecord,
RequestFactoryJsonImpl.NOT_FUTURE);
-
+ EntityProxyIdImpl recordKey = new
EntityProxyIdImpl(newJsoRecord.getId(),
+ newJsoRecord.getSchema(), RequestFactoryJsonImpl.NOT_FUTURE,
+ newJsoRecord.getRequestFactory().datastoreToFutureMap.get(
+ newJsoRecord.getId(), newJsoRecord.getSchema()));
+
ProxyJsoImpl oldRecord = records.get(recordKey);
if (oldRecord == null) {
records.put(recordKey, newJsoRecord);
@@ -73,7 +77,8 @@
array.set(i, newJsoRecord);
}
if (changed) {
- newJsoRecord.getRequestFactory().postChangeEvent(newJsoRecord,
WriteOperation.UPDATE);
+ newJsoRecord.getRequestFactory().postChangeEvent(newJsoRecord,
+ WriteOperation.UPDATE);
}
}
}
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/rebind/RequestFactoryGenerator.java
Wed Sep 8 11:08:25 2010
@@ -52,6 +52,7 @@
import
com.google.gwt.requestfactory.server.ReflectionBasedOperationRegistry;
import com.google.gwt.requestfactory.shared.EntityProxy;
import com.google.gwt.requestfactory.shared.EntityProxyChangedEvent;
+import com.google.gwt.requestfactory.shared.EntityProxyId;
import com.google.gwt.requestfactory.shared.Property;
import com.google.gwt.requestfactory.shared.PropertyReference;
import com.google.gwt.requestfactory.shared.ProxyListRequest;
@@ -361,6 +362,14 @@
sw.println("}");
sw.println();
+ // write getProxyId(String)
+ sw.println("public " + EntityProxyId.class.getName() + "
getProxyId(String token) {");
+ sw.indent();
+ sw.println("return getProxyId(token, new " + proxyToTypeMapName
+ "());");
+ sw.outdent();
+ sw.println("}");
+ sw.println();
+
// write getToken(Proxy)
sw.println("public String getToken(EntityProxy proxy) {");
sw.indent();
@@ -493,7 +502,6 @@
sw.outdent();
sw.println("}");
-
sw.outdent();
sw.println("}");
sw.println();
@@ -670,7 +678,7 @@
}
if (classType != null
&&
classType.isAssignableTo(typeOracle.findType(EntityProxy.class.getName())))
{
- sb.append(").getUniqueId()");
+ sb.append(").getWireFormatId()");
}
}
return "new Object[] {" + sb.toString() + "}";
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
Thu Sep 2 20:54:55 2010
+++ /trunk/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
Wed Sep 8 11:08:25 2010
@@ -55,6 +55,11 @@
*/
<V> PropertyReference<V> getRef(Property<V> property);
+ /**
+ * @return {...@link EntityProxyId} that is stable across changes.
+ */
+ EntityProxyId getStableId();
+
/**
* @return the version of this Proxy.
*/
=======================================
---
/trunk/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
Thu Sep 2 20:54:55 2010
+++
/trunk/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
Wed Sep 8 11:08:25 2010
@@ -52,9 +52,16 @@
/**
* Return the appropriate proxy, which may have only its id attribute
set.
+ *
+ * @deprecated, use the getProxyId method below.
*/
EntityProxy getProxy(String token);
+ /**
+ * Return the appropriate {...@link EntityProxyId}, a stable id for the
Proxy.
+ */
+ EntityProxyId getProxyId(String token);
+
/**
* Get a {...@link com.google.gwt.user.client.History} compatible token that
* represents the given class. It can be processed by
=======================================
--- /trunk/user/src/com/google/gwt/requestfactory/shared/SyncResult.java
Thu Sep 2 20:54:55 2010
+++ /trunk/user/src/com/google/gwt/requestfactory/shared/SyncResult.java
Wed Sep 8 11:08:25 2010
@@ -30,7 +30,7 @@
boolean hasViolations();
// TODO: futureId isn't working out so well, leaving soon
- Long getFutureId();
+ Object getFutureId();
EntityProxy getProxy();
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/RequestFactoryJreSuite.java
Thu Sep 2 20:54:55 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/RequestFactoryJreSuite.java
Wed Sep 8 11:08:25 2010
@@ -15,7 +15,7 @@
*/
package com.google.gwt.requestfactory;
-import com.google.gwt.requestfactory.client.impl.EntityProxyIdTest;
+import com.google.gwt.requestfactory.client.impl.EntityProxyIdImplTest;
import com.google.gwt.requestfactory.server.JsonRequestProcessorTest;
import
com.google.gwt.requestfactory.server.ReflectionBasedOperationRegistryTest;
import com.google.gwt.requestfactory.server.RequestPropertyTest;
@@ -30,7 +30,7 @@
public static Test suite() {
TestSuite suite = new TestSuite(
"requestfactory package tests that require the JRE");
- suite.addTestSuite(EntityProxyIdTest.class);
+ suite.addTestSuite(EntityProxyIdImplTest.class);
suite.addTestSuite(JsonRequestProcessorTest.class);
suite.addTestSuite(ReflectionBasedOperationRegistryTest.class);
suite.addTestSuite(RequestPropertyTest.class);
=======================================
---
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
Tue Sep 7 10:09:37 2010
+++
/trunk/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
Wed Sep 8 11:08:25 2010
@@ -18,6 +18,7 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.junit.client.GWTTestCase;
+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;
@@ -33,11 +34,109 @@
* Tests for {...@link com.google.gwt.requestfactory.shared.RequestFactory}.
*/
public class RequestFactoryTest extends GWTTestCase {
+
+ private SimpleRequestFactory req;
+ private HandlerManager eventBus;
+
+ @Override
+ public void gwtSetUp() {
+ req = GWT.create(SimpleRequestFactory.class);
+ eventBus = new HandlerManager(null);
+ req.init(eventBus);
+ }
+
+ @Override
+ public void gwtTearDown() {
+ req.simpleFooRequest().reset().fire(new Receiver<Void>() {
+ public void onSuccess(Void response, Set<SyncResult> syncResults) {
+ }
+ });
+ req.simpleBarRequest().reset().fire(new Receiver<Void>() {
+ public void onSuccess(Void response, Set<SyncResult> syncResults) {
+ }
+ });
+ }
+
+ /*
+ * TODO(amitmanjhi) : new test that needs to be re-enabled.
+ */
+ public void disabled_testDummyCreate() {
+ delayTestFinish(5000);
+
+ final SimpleFooProxy foo = (SimpleFooProxy)
req.create(SimpleFooProxy.class);
+ RequestObject<SimpleFooProxy> fooReq =
req.simpleFooRequest().persistAndReturnSelf(
+ foo);
+ fooReq.fire(new Receiver<SimpleFooProxy>() {
+
+ public void onSuccess(final SimpleFooProxy returned,
+ Set<SyncResult> syncResults) {
+ assertNotSame(foo.getStableId(), returned.getStableId());
+ assertEquals(foo.getStableId(), returned.getStableId());
+ finishTest();
+ }
+ });
+ }
+
+ public void testStableId() {
+ delayTestFinish(5000);
+
+ final SimpleFooProxy foo = (SimpleFooProxy)
req.create(SimpleFooProxy.class);
+ final Object futureId = foo.getId();
+ assertTrue(((ProxyImpl) foo).isFuture());
+ RequestObject<SimpleFooProxy> fooReq =
req.simpleFooRequest().persistAndReturnSelf(
+ foo);
+
+ final SimpleFooProxy 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<SimpleFooProxy>() {
+
+ public void onSuccess(final SimpleFooProxy returned,
+ Set<SyncResult> syncResults) {
+ 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<SimpleFooProxy> editRequest =
req.simpleFooRequest().persistAndReturnSelf(
+ returned);
+ final SimpleFooProxy editableFoo = editRequest.edit(returned);
+ editableFoo.setUserName("GWT power user");
+ editRequest.fire(new Receiver<SimpleFooProxy>() {
+
+ public void onSuccess(SimpleFooProxy returnedAfterEdit,
+ Set<SyncResult> syncResults) {
+ assertNotSame(returnedAfterEdit, editableFoo); // Mutation
above.
+ assertEquals(returnedAfterEdit.getStableId(),
+ returned.getStableId());
+ assertEquals(returnedAfterEdit.getId(), returned.getId());
+ finishTest();
+ }
+ });
+ }
+ });
+ }
+
+ private void checkStableIdEquals(SimpleFooProxy expected, SimpleFooProxy
actual) {
+ assertNotSame(expected.getStableId(), actual.getStableId());
+ assertEquals(expected.getStableId(), actual.getStableId());
+ assertEquals(expected.getStableId().hashCode(),
actual.getStableId().hashCode());
+
+ // No assumptions about the proxy objects (being proxies and all)
+ assertNotSame(expected, actual);
+ assertFalse(expected.equals(actual));
+ }
public void testViolationPresent() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy newFoo = req.create(SimpleFooProxy.class);
@@ -70,9 +169,6 @@
}
public void testViolationAbsent() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy newFoo = req.create(SimpleFooProxy.class);
@@ -96,9 +192,6 @@
* 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(
@@ -129,9 +222,6 @@
* 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);
SimpleBarProxy newBar = req.create(SimpleBarProxy.class);
@@ -173,9 +263,6 @@
* Entity
*/
public void testPersistNewEntityExistingRelation() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy newFoo = req.create(SimpleFooProxy.class);
@@ -214,9 +301,6 @@
* to Entity Persist
*/
public void testPersistNewEntityNewRelation() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy newFoo = req.create(SimpleFooProxy.class);
SimpleBarProxy newBar = req.create(SimpleBarProxy.class);
@@ -264,9 +348,6 @@
}
public void testPersistRecursiveRelation() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy rayFoo = req.create(SimpleFooProxy.class);
@@ -284,9 +365,6 @@
}
public void testPersistRelation() {
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
SimpleFooProxy rayFoo = req.create(SimpleFooProxy.class);
@@ -333,9 +411,6 @@
}
public void testFetchEntity() {
- SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
req.simpleFooRequest().findSimpleFooById(999L).fire(
new Receiver<SimpleFooProxy>() {
@@ -353,9 +428,6 @@
}
public void testFetchEntityWithRelation() {
- SimpleRequestFactory req = GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
req.simpleFooRequest().findSimpleFooById(999L).with("barField").fire(
new Receiver<SimpleFooProxy>() {
@@ -373,10 +445,6 @@
}
public void testProxysAsInstanceMethodParams() {
-
- final SimpleRequestFactory req =
GWT.create(SimpleRequestFactory.class);
- HandlerManager hm = new HandlerManager(null);
- req.init(hm);
delayTestFinish(5000);
req.simpleFooRequest().findSimpleFooById(999L).fire(
new Receiver<SimpleFooProxy>() {
@@ -402,9 +470,6 @@
* (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(
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors