RequestFactory - how to fetch object graph

199 views
Skip to first unread message

mp31415

unread,
Nov 23, 2010, 10:59:47 AM11/23/10
to Google Web Toolkit
By default RequestFactory(RF) fetches an entity proxy itself(the root)
but does not fetch other entity proxies referenced from the root. In
order to fetch referenced properties their names must be provided
using with() method on the request(context). Is there a syntax to
request proxies nested even deeper (referenced from those referenced
entities of the first level)?

For example, if there are three classes(entities): User, Line, Point:

class User
{
Set<Line> lines;
}
class Line
{
Point start;
Point end;
}
class Point
{
int x;
int y;
}

How can I fetch User proxy with all its lines and points?

Please don't tell me about denormalizing, workarounds like referencing
everything directly from User or about upcoming in GWT 2.1.1
value(embedded) objects. The question is about entity graph and the
classes above are just an illustration.

Thanks.

mp31415

unread,
Nov 23, 2010, 7:52:59 PM11/23/10
to Google Web Toolkit
It seems dot notation works (found in RequestFactory unit tests).
Something along the lines .with("lines.start").with("lines.end").

tshalif

unread,
Dec 11, 2010, 11:10:03 AM12/11/10
to Google Web Toolkit
I wonder either there is a better way to tell RequestFactory to
recursively populate my object graph - I feel a bit silly using this:

PojoShamRequest request =
PojoShamRequestFactory.Util.get().pojoShamRequest();

request.findPojoSham(777L).with(
"items.items.items.items.items.items.items.items.items.items.items.items",
"items.properties",
"items.items.properties",
"items.items.items.properties",
"items.items.items.items.properties",
"items.items.items.items.items.properties",
"items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.items.items.items.items.properties",
"items.items.items.items.items.items.items.items.items.items.items.items.properties".fire(...);

On Nov 24, 9:52 am, mp31415 <mp_...@yahoo.com> wrote:
> It seems dot notation works (found inRequestFactoryunit tests).
> Something along the lines .with("lines.start").with("lines.end").
>
> On Nov 23, 10:59 am, mp31415 <mp_...@yahoo.com> wrote:
>
>
>
>
>
>
>
> > By defaultRequestFactory(RF) fetches an entity proxy itself(the root)

Eugene Ivlev

unread,
Oct 18, 2012, 8:14:24 AM10/18/12
to google-we...@googlegroups.com
Oh my God! It's disgusting, but it is so!

Isn't exist better way to work with nested objects?


суббота, 11 декабря 2010 г., 20:10:03 UTC+4 пользователь tshalif написал:

Jens

unread,
Oct 18, 2012, 8:35:24 AM10/18/12
to google-we...@googlegroups.com
Editor Framework: RequestFactoryEditorDriver.getPaths() is one solution. It gives you all paths needed by your Editor hierarchy.

In GWT 2.5 there is a global/wildcard operator "*": http://code.google.com/p/google-web-toolkit/issues/detail?id=6697 (but "**" is not supported yet).

I think thats all you have for now.

-- J.

Richard

unread,
Oct 18, 2012, 8:48:16 AM10/18/12
to google-we...@googlegroups.com
AFAIK one thing the "with" does for you is call the method named, so with("lines") will call getLines(), which I imagine would let you build up any structure, including a recursive one.

I haven't tried deeply nested structures, though - please update if you know better.
Reply all
Reply to author
Forward
0 new messages