Hi,

I came across an interesting issue and thought I would post it so that it
might save someone else some time - I'm not sure if this is down to
questionable coding practise on my part causing the relevant classloader to
burp or Tapestry relevant ...  the stack trace is at the bottom of the mail.

I have a service bound to an interface in the ioc registry.  The interface
extends another interface and duplicates a method name and parameter list
however the return type in the overridden method is a concrete class rather
than an implementing interface, as specified in the super interface ex.:

public interface BaseEntityManager {
        public void IPersistentObject getEntity(IPersistentObjectKey key);
}
public interface UserEntityManager extends BaseEntityManager {
        public void User getEntity(IPersistentObjectKey key);
}

This is to reduce the need for explicit casting around the application.

Concrete class User implements IPersistentObject and extends
BasePersistentObject.  Service UserEntityManagerImpl implements
UserEntityManager and extends BaseEntityManagerImpl - it implements User
getEntity(IPersistentObjectKey key), which just calls the superclass
equivalent and casts the result to a User object.  Service
UserEntityManagerImpl is bound to the ioc registry against interface
UserEntityManager.  UserEntityManager is injected into a page and when the
getEntity method is called the stack trace below results.  If I use a
non-injected version of the same class via the interface (ex.
UserEntityManager uam = new UserEntityManagerImpl();, uam.getEntity(key)), I
get the expected (correct) result.  Is this possibly down to a JIT object
creation issue in the IOC Registry, or the duplicate method name causing
some ambiguity problem on the return type (concrete vs. interface)?

I don't need a solution to this, as I just altered my specialised interface
to have different method names - just thought it might help someone else
trying to trace through a lot of dynamically generated code.

[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
with uncaught exception:
$UserEntityManagerEX_1257d50b8e1.getExistingEntity(Lcom/<company>/<product>/
common/IPersistentObjectRef;)Lcom/<company>/<product>/entities/core/user/Use
r;
java.lang.AbstractMethodError:
$UserEntityManagerEX_1257d50b8e1.getExistingEntity(Lcom/<company>/<product>/
common/IPersistentObjectRef;)Lcom/<company>/<product>/entities/core/user/Use
r;
        at
com.<company>.<product>.pages.user.SearchUser.onShowDetails(SearchUser.java:
71)
        at
com.<company>.<product>.pages.user.SearchUser.dispatchComponentEvent(SearchU
ser.java)
        at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEve
nt(ComponentPageElementImpl.java:902)
        at
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerCont
extEvent(ComponentPageElementImpl.java:1081)
        at
org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.hand
le(ComponentEventRequestHandlerImpl.java:75)
        at
org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.h
andle(ImmediateActionRenderResponseFilter.java:42)
        at
$ComponentEventRequestHandler_1257d50b98a.handle($ComponentEventRequestHandl
er_1257d50b98a.java)
        at
org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
        at
$ComponentEventRequestHandler_1257d50b98a.handle($ComponentEventRequestHandl
er_1257d50b98a.java)
        at
org.apache.tapestry5.services.TapestryModule$36.handle(TapestryModule.java:2
164)
        at
$ComponentEventRequestHandler_1257d50b98a.handle($ComponentEventRequestHandl
er_1257d50b98a.java)
        at
$ComponentEventRequestHandler_1257d50b8b5.handle($ComponentEventRequestHandl
er_1257d50b8b5.java)
        at
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.han
dleComponentEvent(ComponentRequestHandlerTerminator.java:43)
        at
$ComponentRequestHandler_1257d50b8a9.handleComponentEvent($ComponentRequestH
andler_1257d50b8a9.java)
        at
org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(Com
ponentEventDispatcher.java:46)
        at $Dispatcher_1257d50b8ab.dispatch($Dispatcher_1257d50b8ab.java)
        at $Dispatcher_1257d50b8a2.dispatch($Dispatcher_1257d50b8a2.java)
        at
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.servic
e(TapestryModule.java:245)
        at
nu.localhost.tapestry5.springsecurity.services.internal.RequestFilterWrapper
$1.doFilter(RequestFilterWrapper.java:60)
        at
nu.localhost.tapestry5.springsecurity.services.internal.SpringSecurityExcept
ionTranslationFilter.doFilterHttp(SpringSecurityExceptionTranslationFilter.j
ava:100)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.RequestFilterWrapper
.service(RequestFilterWrapper.java:55)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErr
orFilter.java:26)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:7
78)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:7
67)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFiles
Filter.java:85)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckF
orUpdatesFilter.java:90)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckF
orUpdatesFilter.java:81)
        at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(Concurrent
Barrier.java:85)
        at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckFo
rUpdatesFilter.java:103)
        at $RequestHandler_1257d50b8a3.service($RequestHandler_1257d50b8a3.java)
        at $RequestHandler_1257d50b896.service($RequestHandler_1257d50b896.java)
        at
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTermin
ator.service(TapestryModule.java:197)
        at
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPat
hsFilter.java:62)
        at
$HttpServletRequestFilter_1257d50b895.service($HttpServletRequestFilter_1257
d50b895.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(
FilterSecurityInterceptor.java:109)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilte
r(FilterSecurityInterceptor.java:83)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b892.service($HttpServletRequestFilter_1257
d50b892.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
nu.localhost.tapestry5.springsecurity.services.internal.SpringSecurityExcept
ionTranslationFilter.doFilterHttp(SpringSecurityExceptionTranslationFilter.j
ava:100)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.providers.anonymous.AnonymousProcessingFilter.d
oFilterHttp(AnonymousProcessingFilter.java:105)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b891.service($HttpServletRequestFilter_1257
d50b891.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter
.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b890.service($HttpServletRequestFilter_1257
d50b890.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilt
erHttp(RememberMeProcessingFilter.java:109)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b88f.service($HttpServletRequestFilter_1257
d50b88f.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(Abstra
ctProcessingFilter.java:277)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b88e.service($HttpServletRequestFilter_1257
d50b88e.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper$1.doFilter(HttpServletRequestFilterWrapper.java:56)
        at
org.springframework.security.context.HttpSessionContextIntegrationFilter.doF
ilterHttp(HttpSessionContextIntegrationFilter.java:235)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
nu.localhost.tapestry5.springsecurity.services.internal.HttpServletRequestFi
lterWrapper.service(HttpServletRequestFilterWrapper.java:52)
        at
$HttpServletRequestFilter_1257d50b88d.service($HttpServletRequestFilter_1257
d50b88d.java)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:7
26)
        at
$HttpServletRequestHandler_1257d50b898.service($HttpServletRequestHandler_12
57d50b898.java)
        at
$HttpServletRequestHandler_1257d50b88c.service($HttpServletRequestHandler_12
57d50b88c.java)
        at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler
.java:1084)
        at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164
)
        at 
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
        at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.jav
a:90)
        at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter
.java:406)
        at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler
.java:1084)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:404)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnectio
n.java:828)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:4
50)


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to