Issue With Fetching Complex Object

10 views
Skip to first unread message

dedee

unread,
Dec 8, 2010, 1:51:28 AM12/8/10
to twig-persist
Hi,

The issue is very intermittent and happens quite frequently when I
query the object and try to display the object graph (twig-persist
2.03b):

java.lang.IllegalStateException: Problem translating field private
java.util.List org.fluid.server.core.gae.model.app.Application.modules
with properties [[SimpleProperty
value=[org_fluid_server_core_gae_model_tenant_Tenant(12001)/
org_fluid_server_core_gae_model_app_Application(1)/
org_fluid_server_core_gae_model_app_Module(1001)] path=modules
indexed=false]]


Model:

public class Application {
private static final long serialVersionUID = 1L;
@Id
private Long id;
private String name;
private String shortname;
private String description;

@Child
private List<Module> modules;

@Parent
private Tenant tenant;
////


public class Module{
private static final long serialVersionUID = 1L;
@Id
private Long id;

private String name;
private String shortname;
private String description;

@Parent
private Application application;
@Child
private List<Resource> resources;

@Parent
private Tenant tenant;
////

public class Resource {
private static final long serialVersionUID = 1L;
@Id
private Long id;

private String name;
private String shortname;
private String description;

private String key;

@Parent
private Module module;

@Parent
private Tenant tenant;

////

public class Tenant{
private static final long serialVersionUID = 1L;
@Id
private Long id;

private String name;

private String shortName;

private TenantType type;


Query:


StringBuffer sb = new StringBuffer();
List<Application> applns = basedao.search(Application.class, new
Search<Application>());
if(applns.size()>0){
Application appln = applns.get(0);
sb.append("Appln:").append(appln.getName())
.append("{modules:");
for(Module m :appln.getModules()){
sb.append("(").append(m.getName()).append(")")
.append("{resources:");
for(Resource r:m.getResources()){
sb.append("(").append(r.getName()).append(")");
}
sb.append("}");

}
sb.append("}");
}
return sb.toString();

// dao search

RootFindCommand<T> command = find().type(searchClass);
for(Filter f: search.getFilters()){
command.addFilter(f.getProperty(), getOperator(f.getOperator()),
f.getValue());
}
return command.returnAll().now();

John Patterson

unread,
Dec 8, 2010, 10:45:05 AM12/8/10
to twig-persist
Hi,

Can you post the rest of the exception?  That should show the root cause of the problem.

2010/12/8 dedee <ken.anni...@gmail.com>

dedee

unread,
Dec 9, 2010, 2:39:50 AM12/9/10
to twig-persist
java.lang.IllegalStateException: Problem translating field private
java.util.List org.fluid.server.core.gae.model.app.Application.modules
with properties [[SimpleProperty
value=[org_fluid_server_core_gae_model_tenant_Tenant(10001)/
org_fluid_server_core_gae_model_app_Application(1)/
org_fluid_server_core_gae_model_app_Module(1001)] path=modules
indexed=false]]
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
136)
at com.google.code.twig.standard.TranslatorObjectDatastore
$StrategyObjectFieldTranslator.decode(TranslatorObjectDatastore.java:
611)
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
111)
at
com.google.code.twig.standard.StandardDecodeCommand.entityToInstance(StandardDecodeCommand.java:
63)
at com.google.code.twig.standard.StandardDecodeCommand
$1.next(StandardDecodeCommand.java:102)
at
com.google.common.collect.ForwardingIterator.next(ForwardingIterator.java:
46)
at com.google.common.collect.Lists.newArrayList(Lists.java:139)
at com.google.code.twig.standard.StandardRootFindCommand
$4.now(StandardRootFindCommand.java:318)
at com.google.code.twig.standard.StandardRootFindCommand
$4.now(StandardRootFindCommand.java:314)
at
org.fluid.server.core.gae.dao.datastore.DataStore.search(DataStore.java:
31)
at org.fluid.server.core.gae.dao.BaseDao.search(BaseDao.java:72)
at
org.fluid.gae.app1.server.service.App1Service.viewAll(App1Service.java:
86)
at org.fluid.gae.app1.server.rest.MyResource.viewall(MyResource.java:
29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
at java.lang.reflect.Method.invoke(Method.java:43)
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:
168)
at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:
70)
at
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:
279)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:
136)
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:
86)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:
136)
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:
74)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:
1357)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:
1289)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:
1239)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:
1229)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
420)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:
497)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:
684)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:
24)
at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
435)
at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:
572)
at com.google.tracing.TraceContext$TraceContextRunnable
$1.run(TraceContext.java:448)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:
688)
at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:
326)
at com.google.tracing.TraceContext
$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:
318)
at com.google.tracing.TraceContext
$TraceContextRunnable.run(TraceContext.java:446)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NullPointerException
at
com.google.code.twig.standard.StandardDecodeCommand.keysToInstances(StandardDecodeCommand.java:
156)
at
com.google.code.twig.standard.StandardUntypedMultipleLoadCommand.returnResultsNow(StandardUntypedMultipleLoadCommand.java:
20)
at
com.google.code.twig.standard.RelationTranslator.keysToInstances(RelationTranslator.java:
65)
at
com.google.code.twig.standard.RelationTranslator.decode(RelationTranslator.java:
51)
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
131)
... 57 more

On Dec 8, 11:45 pm, John Patterson <jdpatter...@gmail.com> wrote:
> Hi,
>
> Can you post the rest of the exception?  That should show the root cause of
> the problem.
>
> 2010/12/8 dedee <k...@gmail.com>

dedee

unread,
Dec 9, 2010, 2:42:18 AM12/9/10
to twig-persist
java.lang.IllegalStateException: Problem translating field private
java.util.List org.fluid.server.core.gae.model.app.Application.modules
with properties [[SimpleProperty
value=[org_fluid_server_core_gae_model_tenant_Tenant(7001)/
Caused by: java.lang.IllegalStateException: Problem translating field
private org.fluid.server.core.gae.model.app.Application
org.fluid.server.core.gae.model.app.Module.application with properties
[]
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
136)
at com.google.code.twig.standard.TranslatorObjectDatastore
$StrategyObjectFieldTranslator.decode(TranslatorObjectDatastore.java:
611)
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
111)
at
com.google.code.twig.standard.StandardDecodeCommand.entityToInstance(StandardDecodeCommand.java:
63)
at
com.google.code.twig.standard.StandardDecodeCommand.keysToInstances(StandardDecodeCommand.java:
164)
at
com.google.code.twig.standard.StandardUntypedMultipleLoadCommand.returnResultsNow(StandardUntypedMultipleLoadCommand.java:
20)
at
com.google.code.twig.standard.RelationTranslator.keysToInstances(RelationTranslator.java:
65)
at
com.google.code.twig.standard.RelationTranslator.decode(RelationTranslator.java:
51)
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
131)
... 57 more
Caused by: java.lang.IllegalStateException: Problem translating field
private java.util.List
org.fluid.server.core.gae.model.app.Application.modules with
properties [[SimpleProperty
value=[org_fluid_server_core_gae_model_tenant_Tenant(7001)/
org_fluid_server_core_gae_model_app_Application(1)/
org_fluid_server_core_gae_model_app_Module(1001)] path=modules
indexed=false]]
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
136)
at com.google.code.twig.standard.TranslatorObjectDatastore
$StrategyObjectFieldTranslator.decode(TranslatorObjectDatastore.java:
611)
at
com.google.code.twig.translator.ObjectFieldTranslator.decode(ObjectFieldTranslator.java:
111)
at
com.google.code.twig.standard.StandardDecodeCommand.entityToInstance(StandardDecodeCommand.java:
63)
at
com.google.code.twig.standard.StandardDecodeCommand.keyToInstance(StandardDecodeCommand.java:
127)
at
com.google.code.twig.standard.StandardUntypedSingleLoadCommand.keyToInstance(StandardUntypedSingleLoadCommand.java:
5)
at
com.google.code.twig.standard.StandardUntypedSingleLoadCommand.now(StandardUntypedSingleLoadCommand.java:
18)
at
com.google.code.twig.standard.RelationTranslator.keyToInstance(RelationTranslator.java:
99)
at
com.google.code.twig.standard.ParentRelationTranslator.decode(ParentRelationTranslator.java:
38)
at com.google.code.twig.translator.ObjectFieldTranslator

On Dec 8, 11:45 pm, John Patterson <jdpatter...@gmail.com> wrote:
> Hi,
>
> Can you post the rest of the exception?  That should show the root cause of
> the problem.
>
> 2010/12/8 dedee <k...@gmail.com>

John Patterson

unread,
Dec 9, 2010, 8:28:12 AM12/9/10
to twig-persist
I can see the cause of the problem at the line that throws the NullPointerException.

I cannot check in a fix right now from my netbook but if you check out the source you can change line 156 of StandardDecodeCommand

from:

if (!missing.isEmpty())

to:

if (missing != null && !missing.isEmpty())
Reply all
Reply to author
Forward
0 new messages