Issue 1 in yadic: ConstructorResolver swallowing useful exceptions

8 views
Skip to first unread message

ya...@googlecode.com

unread,
Mar 20, 2011, 10:27:37 AM3/20/11
to ya...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 1 by m...@mikehogan.net: ConstructorResolver swallowing useful
exceptions
http://code.google.com/p/yadic/issues/detail?id=1

What steps will reproduce the problem?
1. use ConstructorResolver to resolve object whose constructor will go bang
with NoSuchMethodError - I guess any exception will do.
2. Watch it go bang.

What is the expected output? What do you see instead?

Expected a report of what the problem was. I modified the code to print
the stack trace of the problem and got this:

[java] java.lang.reflect.InvocationTargetException
[java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
[java] at
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[java] at
com.googlecode.yadic.resolvers.ConstructorResolver$1.call(ConstructorResolver.java:57)
[java] at
com.googlecode.yadic.resolvers.ConstructorResolver$1.call(ConstructorResolver.java:53)
[java] at com.googlecode.totallylazy.Callers.call(Callers.java:43)
[java] at
com.googlecode.totallylazy.Iterators.tryPick(Iterators.java:203)
[java] at
com.googlecode.totallylazy.Sequences.tryPick(Sequences.java:280)
[java] at
com.googlecode.totallylazy.Sequence.tryPick(Sequence.java:160)
[java] at
com.googlecode.yadic.resolvers.ConstructorResolver.resolve(ConstructorResolver.java:48)
[java] at
com.googlecode.yadic.resolvers.Resolvers$1.resolve(Resolvers.java:47)
[java] at
com.googlecode.yadic.resolvers.ClosableResolver.resolve(ClosableResolver.java:31)
[java] at
com.googlecode.yadic.resolvers.LazyResolver.resolve(LazyResolver.java:28)
[java] at
com.googlecode.yadic.resolvers.CloseGuard.resolve(CloseGuard.java:23)
[java] at
com.googlecode.yadic.resolvers.Resolvers.resolve(Resolvers.java:106)
[java] at
com.googlecode.yadic.BaseTypeMap.resolve(BaseTypeMap.java:43)
[java] at
com.googlecode.yadic.resolvers.Resolvers.resolve(Resolvers.java:106)
[java] at
com.googlecode.utterlyidle.servlet.ApplicationStarter.createApplication(ApplicationStarter.java:24)
[java] at
com.googlecode.utterlyidle.servlet.ApplicationStarter.contextInitialized(ApplicationStarter.java:36)
[java] at
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:645)
[java] at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:189)
[java] at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:978)
[java] at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586)
[java] at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:349)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165)
[java] at
org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:162)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92)
[java] at org.eclipse.jetty.server.Server.doStart(Server.java:228)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:990)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at
org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:955)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.eclipse.jetty.start.Main.invokeMain(Main.java:394)
[java] at org.eclipse.jetty.start.Main.start(Main.java:546)
[java] at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:208)
[java] at org.eclipse.jetty.start.Main.main(Main.java:75)
[java] Caused by: java.lang.NoSuchMethodError:
com.googlecode.totallylazy.Predicates.notNull(Ljava/lang/Class;)Lcom/googlecode/totallylazy/predicates/LogicalPredicate;
[java] at
com.googlecode.utterlyidle.UriTemplateExtractor.extract(UriTemplateExtractor.java:15)
[java] at
com.googlecode.utterlyidle.HttpMethodActivator.<init>(HttpMethodActivator.java:25)
[java] at
com.googlecode.utterlyidle.AnnotatedResources.add(AnnotatedResources.java:26)
[java] at
com.googlecode.utterlyidle.modules.CoreModule.addResources(CoreModule.java:36)
[java] at
com.googlecode.utterlyidle.modules.Modules$2.call(Modules.java:24)
[java] at
com.googlecode.utterlyidle.modules.Modules$2.call(Modules.java:22)
[java] at com.googlecode.totallylazy.Callers.call(Callers.java:43)
[java] at
com.googlecode.totallylazy.Iterators.forEach(Iterators.java:30)
[java] at
com.googlecode.totallylazy.Sequences.forEach(Sequences.java:148)
[java] at
com.googlecode.totallylazy.Sequence.forEach(Sequence.java:13)
[java] at
com.googlecode.utterlyidle.RestApplication.add(RestApplication.java:49)
[java] at
com.googlecode.utterlyidle.RestApplication.<init>(RestApplication.java:33)
[java] at
com.cobblesong.application.CobbleSongApplication.<init>(Unknown Source)

So I had the wrong version of totallylazy.

What I got was:

[java] com.googlecode.yadic.ContainerException:
com.cobblesong.application.CobbleSongApplication does not have a
satisfiable constructor
[java] at
com.googlecode.yadic.resolvers.ConstructorResolver.resolve(ConstructorResolver.java:48)
[java] at
com.googlecode.yadic.resolvers.Resolvers$1.resolve(Resolvers.java:47)
[java] at
com.googlecode.yadic.resolvers.ClosableResolver.resolve(ClosableResolver.java:31)
[java] at
com.googlecode.yadic.resolvers.LazyResolver.resolve(LazyResolver.java:28)
[java] at
com.googlecode.yadic.resolvers.CloseGuard.resolve(CloseGuard.java:23)
[java] at
com.googlecode.yadic.resolvers.Resolvers.resolve(Resolvers.java:106)
[java] at
com.googlecode.yadic.BaseTypeMap.resolve(BaseTypeMap.java:43)
[java] at
com.googlecode.yadic.resolvers.Resolvers.resolve(Resolvers.java:106)
[java] at
com.googlecode.utterlyidle.servlet.ApplicationStarter.createApplication(ApplicationStarter.java:24)
[java] at
com.googlecode.utterlyidle.servlet.ApplicationStarter.contextInitialized(ApplicationStarter.java:36)
[java] at
org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:645)
[java] at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:189)
[java] at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:978)
[java] at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586)
[java] at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:349)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165)
[java] at
org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:162)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92)
[java] at org.eclipse.jetty.server.Server.doStart(Server.java:228)
[java] at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
[java] at
org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:990)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at
org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:955)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.eclipse.jetty.start.Main.invokeMain(Main.java:394)
[java] at org.eclipse.jetty.start.Main.start(Main.java:546)
[java] at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:208)
[java] at org.eclipse.jetty.start.Main.main(Main.java:75)

Reply all
Reply to author
Forward
0 new messages