Hi,

I'm seeing weird NumberFormatExceptions on component actions from pages in folders with index pages. It looks like Tapestry tries to pass the page and nested component id of the component event to the index page if it accepts an activation context.

Scenario: I have a news folder in com.fsadev.kamino.pages. It contains a NewsIndex and a NewsRead page. NewsIndex accepts an optional pageNumber:

public class NewsIndex {
  ...
  Object onActivate(int pageNumber) {
    ...
  }
  ...
}

NewsRead has a form that submits a comment. When the comment is submitted the following exception occurs:

[ERROR] RequestExceptionHandler Processing of request failed with uncaught exception: Exception in method com.fsadev.kamino.pages.news.NewsIndex.onActivate(int) (at NewsIndex.java:58), parameter #1: Coercion of read.comment.add to type java.lang.Integer (via String --> Long, Long --> Integer) failed: For input string: "read.comment.add" org.apache.tapestry.runtime.ComponentEventException: Exception in method com.fsadev.kamino.pages.news.NewsIndex.onActivate(int) (at NewsIndex.java:58), parameter #1: Coercion of read.comment.add to type java.lang.Integer (via String --> Long, Long --> Integer) failed: For input string: "read.comment.add" at org.apache.tapestry.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1021) at org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:52) at com.fsadev.kamino.services.auth.AccessRequestFilter.handle(AccessRequestFilter.java:55) at $PageRenderRequestHandler_1185d36d0cc.handle($PageRenderRequestHandler_1185d36d0cc.java) at com.fsadev.tapestry.hibernate.services.TransactionRequestFilter.handle(TransactionRequestFilter.java:45) at $PageRenderRequestHandler_1185d36d0cc.handle($PageRenderRequestHandler_1185d36d0cc.java) at org.apache.tapestry.services.TapestryModule$29.handle(TapestryModule.java:1594) at $PageRenderRequestHandler_1185d36d0cc.handle($PageRenderRequestHandler_1185d36d0cc.java) at $PageRenderRequestHandler_1185d36d0c1.handle($PageRenderRequestHandler_1185d36d0c1.java) at org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:85)
        at $Dispatcher_1185d36d0c4.dispatch($Dispatcher_1185d36d0c4.java)
        at $Dispatcher_1185d36d0b7.dispatch($Dispatcher_1185d36d0b7.java)
at org.apache.tapestry.services.TapestryModule$13.service(TapestryModule.java:918) at org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:43)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
at org.apache.tapestry.services.TapestryModule$3.service(TapestryModule.java:534)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
at org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.java:509)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
at org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
at com.fsadev.tapestry.utilities.services.TapestryUtilitiesModule$1.service(TapestryUtilitiesModule.java:56)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84) at org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77) at org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
        at $RequestHandler_1185d36d0b8.service($RequestHandler_1185d36d0b8.java)
        at $RequestHandler_1185d36d0b2.service($RequestHandler_1185d36d0b2.java)
at org.apache.tapestry.services.TapestryModule$12.service(TapestryModule.java:898) at org.apache.tapestry.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:43) at $HttpServletRequestHandler_1185d36d0b3.service($HttpServletRequestHandler_1185d36d0b3.java) at org.apache.tapestry.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) at $HttpServletRequestFilter_1185d36d0b1.service($HttpServletRequestFilter_1185d36d0b1.java) at $HttpServletRequestHandler_1185d36d0b3.service($HttpServletRequestHandler_1185d36d0b3.java) at $HttpServletRequestHandler_1185d36d0af.service($HttpServletRequestHandler_1185d36d0af.java)
        at org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:164)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) at com.fsadev.tapestry.utilities.StripUrlSessionIdFilter.doFilter(StripUrlSessionIdFilter.java:38) 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:712)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:313)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) Caused by: java.lang.IllegalArgumentException: Exception in method com.fsadev.kamino.pages.news.NewsIndex.onActivate(int) (at NewsIndex.java:58), parameter #1: Coercion of read.comment.add to type java.lang.Integer (via String --> Long, Long --> Integer) failed: For input string: "read.comment.add" at org.apache.tapestry.internal.services.ComponentEventImpl.coerceContext(ComponentEventImpl.java:72) at com.fsadev.kamino.pages.news.NewsIndex.dispatchComponentEvent(NewsIndex.java) at org.apache.tapestry.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:843) at org.apache.tapestry.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1004)
        ... 55 more
Caused by: java.lang.RuntimeException: Coercion of read.comment.add to type java.lang.Integer (via String --> Long, Long --> Integer) failed: For input string: "read.comment.add" at org.apache.tapestry.ioc.internal.services.TypeCoercerImpl.coerce(TypeCoercerImpl.java:130)
        at $TypeCoercer_1185d36d08b.coerce($TypeCoercer_1185d36d08b.java)
at org.apache.tapestry.internal.services.TypeCoercedValueEncoderFactory$1.toValue(TypeCoercedValueEncoderFactory.java:45) at org.apache.tapestry.internal.services.ContextValueEncoderImpl.toValue(ContextValueEncoderImpl.java:47) at $ContextValueEncoder_1185d36d0c3.toValue($ContextValueEncoder_1185d36d0c3.java) at org.apache.tapestry.internal.URLEventContext.get(URLEventContext.java:44) at org.apache.tapestry.internal.services.ComponentEventImpl.coerceContext(ComponentEventImpl.java:67)
        ... 58 more
Caused by: java.lang.NumberFormatException: For input string: "read.comment.add" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Long.parseLong(Long.java:403)
        at java.lang.Long.<init>(Long.java:671)
at org.apache.tapestry.ioc.services.TapestryIOCModule$7.coerce(TapestryIOCModule.java:159) at org.apache.tapestry.ioc.services.TapestryIOCModule$7.coerce(TapestryIOCModule.java:157) at org.apache.tapestry.ioc.services.CoercionTuple$CoercionWrapper.coerce(CoercionTuple.java:54) at org.apache.tapestry.ioc.internal.services.CompoundCoercion.coerce(CompoundCoercion.java:46) at org.apache.tapestry.ioc.internal.services.TypeCoercerImpl.coerce(TypeCoercerImpl.java:126)
        ... 64 more

Something similar happens on index pages that do not accept any activation context. In this case the component event isn't even triggered...

Am I doing something wrong here or have I found a bug?

-Filip

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to