You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Ognen Ivanovski (JIRA)" <de...@tapestry.apache.org> on 2007/09/24 15:58:50 UTC
[jira] Commented: (TAPESTRY-1776) Component Class object exists in
several instances
[ https://issues.apache.org/jira/browse/TAPESTRY-1776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12529863 ]
Ognen Ivanovski commented on TAPESTRY-1776:
-------------------------------------------
After some debugging (method breakpoint on ClassLoader.loadClass()) I came up with the following:
The first time loadClass() with name.endsWith("CheckboxGroup") is called during what seems to be a normal
component instantaion:
Thread [SocketListener0-1] (Suspended (entry into method loadClass in ClassLoader))
ComponentInstantiatorSourceImpl$PackageAwareLoader(ClassLoader).loadClass(String) line: 251
ComponentInstantiatorSourceImpl.findClass(String) line: 254
ComponentInstantiatorSourceImpl.findInstantiator(String) line: 240
$ComponentInstantiatorSource_11537cb38c6.findInstantiator(String) line: not available
PageElementFactoryImpl.newComponentElement(Page, ComponentPageElement, String, String, String, String, Location) line: 268
$PageElementFactory_11537cb38ed.newComponentElement(Page, ComponentPageElement, String, String, String, String, Location) line: not available
PageLoaderProcessor.startComponent(StartComponentToken) line: 618
PageLoaderProcessor.loadTemplateForComponent(ComponentPageElement) line: 498
PageLoaderProcessor.workComponentQueue() line: 714
PageLoaderProcessor.loadPage(String, String, Locale) line: 392
PageLoaderImpl.loadPage(String, Locale) line: 59
$PageLoader_11537cb38eb.loadPage(String, Locale) line: not available
PagePoolImpl.checkout(String) line: 70
$PagePool_11537cb38ea.checkout(String) line: not available
RequestPageCacheImpl.get(String) line: 44
$RequestPageCache_11537cb38e9.get(String) line: not available
$RequestPageCache_11537cb38c2.get(String) line: not available
PageRenderRequestHandlerImpl.handle(String, String[]) line: 55
$PageRenderRequestHandler_11537cb38e3.handle(String, String[]) line: not available
PageRenderDispatcher.dispatch(Request, Response) line: 72
$Dispatcher_11537cb38e6.dispatch(Request, Response) line: not available
$Dispatcher_11537cb38d9.dispatch(Request, Response) line: not available
TapestryModule$12.service(Request, Response) line: 1066
AppModule$1.service(Request, Response, RequestHandler) line: 83
$RequestFilter_11537cb38d8.service(Request, Response, RequestHandler) line: not available
$RequestHandler_11537cb38da.service(Request, Response) line: not available
LocalizationFilter.service(Request, Response, RequestHandler) line: 43
$RequestHandler_11537cb38da.service(Request, Response) line: not available
TapestryModule$2.service(Request, Response, RequestHandler) line: 657
$RequestHandler_11537cb38da.service(Request, Response) line: not available
StaticFilesFilter.service(Request, Response, RequestHandler) line: 63
$RequestHandler_11537cb38da.service(Request, Response) line: not available
CheckForUpdatesFilter$2.invoke() line: 97
CheckForUpdatesFilter$2.invoke() line: 88
ConcurrentBarrier.withRead(Invokable<T>) line: 77
CheckForUpdatesFilter.service(Request, Response, RequestHandler) line: 110
$RequestHandler_11537cb38da.service(Request, Response) line: not available
$RequestHandler_11537cb38d2.service(Request, Response) line: not available
TapestryModule$11.service(HttpServletRequest, HttpServletResponse) line: 1044
$HttpServletRequestHandler_11537cb38d1.service(HttpServletRequest, HttpServletResponse) line: not available
TapestryFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 135
WebApplicationHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 821
WebApplicationHandler.dispatch(String, HttpServletRequest, HttpServletResponse, ServletHolder, int) line: 471
WebApplicationHandler(ServletHandler).handle(String, String, HttpRequest, HttpResponse) line: 568
WebApplicationContext(HttpContext).handle(String, String, HttpRequest, HttpResponse) line: 1530
WebApplicationContext.handle(String, String, HttpRequest, HttpResponse) line: 633
WebApplicationContext(HttpContext).handle(HttpRequest, HttpResponse) line: 1482
Server(HttpServer).service(HttpRequest, HttpResponse) line: 909
HttpConnection.service(HttpRequest, HttpResponse) line: 820
HttpConnection.handleNext() line: 986
HttpConnection.handle() line: 837
SocketListener.handleConnection(Socket) line: 245
SocketListener(ThreadedServer).handle(Object) line: 357
ThreadPool$PoolThread.run() line: 534
Then once again loadClass with name.endsWith("CheckboxGroup") is called. This time it comes through BulkSelect._$read_parameter_checkboxes() and some javaassist classes.
Thread [SocketListener0-1] (Suspended (entry into method loadClass in ClassLoader))
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 251
Launcher$AppClassLoader(ClassLoader).loadClassInternal(String) line: 319
Class<T>.forName0(String, boolean, ClassLoader) line: not available [native method]
Class<T>.forName(String) line: 164
Desc.getClassObject(String) line: 43
Desc.getClassType(String, int, int, int) line: 149
Desc.getType(String, int, int, int) line: 119
Desc.getType(String) line: 75
BulkSelect._$read_parameter_checkboxes() line: not available
BulkSelect.getLinkedElementName() line: 55
$PropertyConduit_11537c975e4.get(Object) line: not available
PropBinding.get() line: 54
PageElementFactoryImpl$3.provideString() line: 187
PageElementFactoryImpl$4.provideString() line: 217
PageElementFactoryImpl$2.render(MarkupWriter, RenderQueue) line: 134
RenderQueueImpl.run(MarkupWriter) line: 57
PageMarkupRendererImpl.renderPageMarkup(Page, MarkupWriter) line: 40
$PageMarkupRenderer_11537c97609.renderPageMarkup(Page, MarkupWriter) line: not available
PageResponseRendererImpl.renderPageResponse(Page, Response) line: 71
$PageResponseRenderer_11537c97595.renderPageResponse(Page, Response) line: not available
PageRenderRequestHandlerImpl.handle(String, String[]) line: 81
$PageRenderRequestHandler_11537c975b5.handle(String, String[]) line: not available
PageRenderDispatcher.dispatch(Request, Response) line: 72
$Dispatcher_11537c975b8.dispatch(Request, Response) line: not available
$Dispatcher_11537c975ab.dispatch(Request, Response) line: not available
TapestryModule$12.service(Request, Response) line: 1066
AppModule$1.service(Request, Response, RequestHandler) line: 83
$RequestFilter_11537c975aa.service(Request, Response, RequestHandler) line: not available
$RequestHandler_11537c975ac.service(Request, Response) line: not available
LocalizationFilter.service(Request, Response, RequestHandler) line: 43
$RequestHandler_11537c975ac.service(Request, Response) line: not available
TapestryModule$2.service(Request, Response, RequestHandler) line: 657
$RequestHandler_11537c975ac.service(Request, Response) line: not available
StaticFilesFilter.service(Request, Response, RequestHandler) line: 63
$RequestHandler_11537c975ac.service(Request, Response) line: not available
CheckForUpdatesFilter$2.invoke() line: 97
CheckForUpdatesFilter$2.invoke() line: 88
ConcurrentBarrier.withRead(Invokable<T>) line: 77
CheckForUpdatesFilter.service(Request, Response, RequestHandler) line: 110
$RequestHandler_11537c975ac.service(Request, Response) line: not available
$RequestHandler_11537c975a4.service(Request, Response) line: not available
TapestryModule$11.service(HttpServletRequest, HttpServletResponse) line: 1044
$HttpServletRequestHandler_11537c975a3.service(HttpServletRequest, HttpServletResponse) line: not available
TapestryFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 135
WebApplicationHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 821
WebApplicationHandler.dispatch(String, HttpServletRequest, HttpServletResponse, ServletHolder, int) line: 471
WebApplicationHandler(ServletHandler).handle(String, String, HttpRequest, HttpResponse) line: 568
WebApplicationContext(HttpContext).handle(String, String, HttpRequest, HttpResponse) line: 1530
WebApplicationContext.handle(String, String, HttpRequest, HttpResponse) line: 633
WebApplicationContext(HttpContext).handle(HttpRequest, HttpResponse) line: 1482
Server(HttpServer).service(HttpRequest, HttpResponse) line: 909
HttpConnection.service(HttpRequest, HttpResponse) line: 820
HttpConnection.handleNext() line: 986
HttpConnection.handle() line: 837
SocketListener.handleConnection(Socket) line: 245
SocketListener(ThreadedServer).handle(Object) line: 357
ThreadPool$PoolThread.run() line: 534
My guess is that
@Parameter(required = true, defaultPrefix="component")
private CheckboxGroup checkboxes;
provokes the second loadClass() call.
> Component Class object exists in several instances
> ----------------------------------------------------
>
> Key: TAPESTRY-1776
> URL: https://issues.apache.org/jira/browse/TAPESTRY-1776
> Project: Tapestry
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.0.5
> Environment: Mac OS X, Eclipse 3.3, Jetty Launcher, Jetty 5
> Reporter: Ognen Ivanovski
>
> I get the following exception:
> java.lang.IllegalArgumentException: Could not find a coercion from type com.telekurs.pass.online.permissiongui.components.CheckboxGroup to type com.telekurs.pass.online.permissiongui.components.CheckboxGroup. Available coercions:... (full trace attached)
> Note that it says "cannot find a coercion from A to A". I did some debugging and indeed the class CheckboxGroup was represented by two different objects.
> Tapestry should not allow for a component class to be loaded differently than in the modified version.
> More details:
> - CheckBoxGroup is a component very similar to RadioGroup (80% code similar) it is used to group render a set of checkboxes with the same name.
> - BulkSelect is a js component that i used for "select all" and "select none" operations in connection to the CheckBoxGroup. It has a
> @Parameter(required = true, defaultPrefix="component")
> private CheckboxGroup checkboxes;
> They are used in the following way:
> <t:BulkSelect checkboxes="permissionSelections" select="true" />
> <t:CheckboxGroup t:id="permissionSelections"
> value="selected" encoder="permissionValueEncoder" disabled="disabled">
> <!-- ...-->
> </t:CheckboxGroup>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org