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]