Dear Team, I'm working on the project right now that is based on the Google technologies stack(GWT, Guice, Google App Engine). My team and I wanted to make the overall project structure in domain-driven design style, so after the latest changes to GWT(the ones that currently in trunk version) I've started to implement our custom ServiceLayer in order to use repositories injected by Guice for the persistence layer. In that custom ServiceLayer implementation I was hoping to be able to avoid static finder methods for persistent entities.
Everything goes fine with implementation of ServiceLayer API. BUT I've got a problem with SimpleRequestProcessor and its decodeInvocationArguments method. SimpleRequestProcessor still believes that all Request methods should be static and it causes a java.lang.NullPointerException at com.google.gwt.autobean.server.impl.TypeUtils.getParameterization(TypeUtils.java: 125) at com.google.gwt.autobean.server.impl.TypeUtils.getSingleParameterization(TypeUtils.java: 151) at com.google.gwt.requestfactory.server.SimpleRequestProcessor.decodeInvocationArguments(SimpleRequestProcessor.java: 357) at com.google.gwt.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java: 422) at com.google.gwt.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java: 218) at com.google.gwt.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java: 125) at com.google.gwt.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java: 142) at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1166) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java: 67) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java: 122) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java: 110) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java: 58) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java: 122) 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 com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java: 70) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 152) at com.google.appengine.tools.development.JettyContainerService $ApiProxyHandler.handle(JettyContainerService.java:349) 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.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: 409) at org.mortbay.thread.QueuedThreadPool $PoolThread.run(QueuedThreadPool.java:582) The question is what is the right way to implement non-static Request methods for persistent entities (like findProject(id))? Maybe you can consider providing some kind of API to switch the RequestProcessor instance? Any feedback will be appreciated. Regards, Eugene -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.