A little bit more information I've gathered with a debugger: At a certain moment, TypeUtils.getParametrization is called with a type that is a TypeVariable of value T. That method doesn't deal with such types, and returns null.
The result of the request where this happens is a List<AValueProxy<AnEntityProxy>> where the entities are declared as such: @ProxyFor(AnAbstractDomainEntity.class) public interface AGenericEntityProxy extends EntityProxy {...} @ProxyFor(AConcreteDomainEntity.class) public interface AnEntityProxy extends AGenericEntityProxy {...} @ProxyFor(ADomainClass.class) public interface AValueProxy<T extends AGenericEntityProxy> extends ValueProxy {...} In the server: public class AnAbstractDomainEntity {...} public class AConcreteDomainEntity extends AnAbstractDomainEntity {...} public class ADomainClass<T extends AnAbstractDomainEntity> {...} When the TypeVariable T is given as type to TypeUtils.getParametrization, the base parameter is the AGenericEntityProxy.class. Is this generics construction I'm making illegal? Is there another way I can implement a similar thing? Thank you, and sorry for the annoyance. On Thu, Sep 15, 2011 at 4:51 PM, Tiago Rinck Caveden <cave...@gmail.com>wrote: > Hello all, > > I'm having a NPE on MethodPropertyContext. The error message doesn't > provide any additional information to help me understand what I'm doing > wrong. By looking at the source code, it seems that the method traverse is > indeed not protecting itself against a null value that may be the return of > TypeUtils.parameterization. Take a look: > > private void traverse(ParameterizationVisitor visitor, Type type) { > Class<?> base = TypeUtils.ensureBaseType(type); > if (visitor.visitType(base)) { > Type[] params = TypeUtils.getParameterization(base, type); > for (Type t : params) { > if (visitor.visitParameter()) { > traverse(visitor, t); > } > visitor.endVisitParameter(); > } > } > visitor.endVisitType(base); > } > > The error is raised when the response of a particular request is treated. > The request is particular because it receives a proxy which uses java > generics in its declaration. It's the only case so far in my application. > > This is the GWT part of the stack trace: > > SEVERE: Unexpected error > java.lang.NullPointerException > at > com.google.web.bindery.autobean.vm.impl.MethodPropertyContext.traverse(MethodPropertyContext.java:102) > at > com.google.web.bindery.autobean.vm.impl.MethodPropertyContext.accept(MethodPropertyContext.java:75) > at > com.google.web.bindery.autobean.shared.impl.AutoBeanCodexImpl$PropertyCoderCreator.maybeCreateCoder(AutoBeanCodexImpl.java:353) > at > com.google.web.bindery.autobean.shared.impl.AutoBeanCodexImpl$PropertyCoderCreator.visitReferenceProperty(AutoBeanCodexImpl.java:341) > at > com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:295) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) > at > com.google.web.bindery.autobean.shared.impl.AutoBeanCodexImpl.doCoderFor(AutoBeanCodexImpl.java:521) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java:276) > at > com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.setProperty(ProxyAutoBean.java:224) > at > com.google.web.bindery.autobean.vm.impl.BeanPropertyContext.set(BeanPropertyContext.java:44) > at > com.google.web.bindery.requestfactory.server.Resolver$1.visitValueProperty(Resolver.java:371) > at > com.google.web.bindery.autobean.vm.impl.ProxyAutoBean.traverseProperties(ProxyAutoBean.java:260) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.traverse(AbstractAutoBean.java:166) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.accept(AbstractAutoBean.java:101) > at > com.google.web.bindery.requestfactory.server.Resolver.resolveClientProxy(Resolver.java:323) > at > com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:418) > at > com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:442) > at > com.google.web.bindery.requestfactory.server.Resolver.resolveClientValue(Resolver.java:196) > at > com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.processInvocationMessages(SimpleRequestProcessor.java:451) > at > com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:217) > at > com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:125) > at > com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:118) > > Is this a GWT bug or am I doing something I shouldn't? > > Thank you, > -- > Tiago Rinck Caveden > > -- Tiago Rinck Caveden -- 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-toolkit@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.