Revision: 9255
Author: [email protected]
Date: Fri Nov 19 05:24:53 2010
Log: Edited wiki page RequestFactory_2_1_1 through web user interface.
http://code.google.com/p/google-web-toolkit/source/detail?r=9255
Modified:
/wiki/RequestFactory_2_1_1.wiki
=======================================
--- /wiki/RequestFactory_2_1_1.wiki Thu Nov 18 16:56:53 2010
+++ /wiki/RequestFactory_2_1_1.wiki Fri Nov 19 05:24:53 2010
@@ -12,23 +12,26 @@
* Multiple methods may be invoked in a single `RequestContext` before
`fire()` is called.
* (Issue 5549) Support boolean is/hasFoo() properties
* (Issue 5522, issue 5357) Value types / Embedded objects
- * A user-defined value object must extend the empty ValueProxy
interface and declare a @ProxyFor annotation.
+ * *New API* A user-defined value object must extend the empty
ValueProxy interface and declare a @ProxyFor annotation.
* ValueProxy instances are never sparse and will implement equals()
and hashCode() based on the values in the proxy.
- * The VP will include the ids for any referenced EntityProxy fields,
but will not force data for the referenced EP's to be returned unless
there's a with() clause in play.
+ * The VP will include the ids for any referenced EntityProxy fields,
but will not force data for the referenced EP's to be returned unless
there's a with() clause is used.
* A ValueProxy returned from an immutable EntityProxy is immutable.
The EntityProxy must be placed into an editable mode via the usual
RequestContext.edit() before you can make a call like
entityProxy.getValue().setFoo("bar").
* A VP returned from a service method invocation is immutable.
- * A new RequestContext.edit() overload will be added to support
`valueObject.getEntityProxy().setFoo(42)`. If it were possible to place a
`ValueProxy` into an editable mode without a reference to a
`RequestContext`, it would be impossible for the mutable `ValueProxy` to
guarantee that its `EntityProxy` getters could return mutable objects.
- * A new "BaseProxy" interface will be added as a superclass of
ValueProxy and EntityProxy to allow `RequestFactory.create` to operate on
both value and entity types.
+ * *New API* A new "BaseProxy" interface will be added as a superclass
of ValueProxy and EntityProxy to allow `RequestFactory.create` to operate
on both value and entity types.
+ * *API Break* RequestContext.edit() now specifies a `BaseProxy` as
the lower bound. If it were possible to place a `ValueProxy` into an
editable mode without a reference to a `RequestContext`, it would be
impossible for the mutable `ValueProxy` to guarantee that its `EntityProxy`
getters could return mutable objects.
* Because ValueProxy doesn't have a stableId() method, there's no way
to use a VP with a call to find() or with any other service method that has
an EntityProxyId argument.
* If you think about a Date object, there's no real meaning in
giving a Date an id.
* If an EntityProxy has a value property, all of the properties of the
VP are checked for mutations and sent to the server.
- * The value in the domain object will be replaced if anything in the
VP's state has changed.
+ * The value in the domain object will be replaced by a new instance if
anything in the VP's state has changed.
+ * This makes client updates applied to a ValueProxy potentially
destructive to server-side state if the ValueProxy represents only a subset
of the data in the value domain object.
* If you don't want the destructive operation, don't use value
objects, or use the to-be-written service helper / Locator to cook up your
own id scheme.
* Since we currently support Date (and it is mutable) the RF
client-side code will use a subclass of Date that can be frozen to ensure
that the owning EntityProxy must be edited.
= What's in review =
* (Issue 5368) Remove integer version constraint
+ * *New API* Any simple value type, `ValueProxy`, or `EntityProxy` may
be used as the version or id property for an `EntityProxy`.
+ * This should make composite keys easier to work with.
= What's coming =
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors