Here is some more information on the problem: It seems almost like an ordering issue, like the objects are created and added, but that Tapestry doesn't know that they are components despite having transformed the classes already. Below is the log from Tapestry for the class transformations and also the stack trace for the NPE that I am getting when tapestry tries to render the menu item for the test that I have set up.
Transformation Log: [DEBUG] MenuBanner Finished class transformation: InternalClassTransformation[ public com.reged.components.MenuBanner extends java.lang.Object implements org.apache.tapestry.runtime.Component, org.apache.tapestry.runtime.RenderCommand add default method: public void postRenderCleanup() <default> add default method: public void setupRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beginRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beforeRenderTemplate(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRenderTemplate(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beforeRenderBody(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRenderBody(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void cleanupRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public boolean handleComponentEvent(org.apache.tapestry.runtime.ComponentEvent $1) <default> add default method: public org.apache.tapestry.ComponentResources getComponentResources() <default> add default method: public void containingPageDidLoad() <default> add default method: public void containingPageDidDetach() <default> add default method: public void containingPageDidAttach() <default> add field: protected final org.apache.tapestry.internal.InternalComponentResources _$resources; replace method: public final org.apache.tapestry.ComponentResources getComponentResources() return _$resources; add method: private void _$write_resources(org.apache.tapestry.ComponentResources $1) throw new java.lang.RuntimeException("Field com.reged.components.MenuBanner._resources is read-only."); replace write _resources: _$write_resources(); add method: private void _$write_pageMenuLink(com.reged.components.nav.PageMenuLink $1) throw new java.lang.RuntimeException("Field com.reged.components.MenuBanner.pageMenuLink is read-only."); replace write pageMenuLink: _$write_pageMenuLink(); extend method: public void containingPageDidLoad() pageMenuLink = (com.reged.components.nav.PageMenuLink) _$resources.getEmbeddedComponent("pageMenuLink"); add default method: public void render(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.RenderQueue $2) <default> replace method: public void render(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.RenderQueue $2) _$resources.queueRender($2); replace method: public void setupRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) { initialize(); } extend method: public void postRenderCleanup() _$resources.postRenderCleanup(); add field: private com.reged.base.AbstractMenuItem _$item_default; extend method: public void containingPageDidLoad() _$item_default = _item; extend method: public void containingPageDidDetach() _item = _$item_default; add field: private java.util.List _$menuItems_default; extend method: public void containingPageDidLoad() _$menuItems_default = _menuItems; extend method: public void containingPageDidDetach() _menuItems = _$menuItems_default; Checking field read _menuItems in method getMenuItems(): field not transformed Checking field write _menuItems in method setMenuItems(): field not transformed Checking field write _item in method setItem(): field not transformed Checking field read _item in method getItem(): field not transformed Checking field write _menuItems in method initialize(): field not transformed Checking field read _menuItems in method initialize(): field not transformed Checking field read _$resources in method postRenderCleanup(): added method Checking field read _$resources in method containingPageDidLoad(): added method Checking field write pageMenuLink in method containingPageDidLoad(): added method Checking field read _item in method containingPageDidLoad(): added method Checking field write _$item_default in method containingPageDidLoad(): added method Checking field read _menuItems in method containingPageDidLoad(): added method Checking field write _$menuItems_default in method containingPageDidLoad(): added method Checking field read _$item_default in method containingPageDidDetach(): added method Checking field write _item in method containingPageDidDetach(): added method Checking field read _$menuItems_default in method containingPageDidDetach(): added method Checking field write _menuItems in method containingPageDidDetach(): added method Checking field read _$resources in method getComponentResources(): added method Checking field read _$resources in method render(): added method convert default constructor: initializer(); add constructor: com.reged.components.MenuBanner(org.apache.tapestry.internal.InternalCom ponentResources $1) { _$resources = $1; _resources = _$resources; initializer(); } ] [DEBUG] AbstractMenuItem Finished class transformation: InternalClassTransformation[ public com.reged.base.AbstractMenuItem extends java.lang.Object implements org.apache.tapestry.runtime.Component, org.apache.tapestry.runtime.RenderCommand add default method: public void postRenderCleanup() <default> add default method: public void setupRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beginRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beforeRenderTemplate(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRenderTemplate(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void beforeRenderBody(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRenderBody(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void afterRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public void cleanupRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) <default> add default method: public boolean handleComponentEvent(org.apache.tapestry.runtime.ComponentEvent $1) <default> add default method: public org.apache.tapestry.ComponentResources getComponentResources() <default> add default method: public void containingPageDidLoad() <default> add default method: public void containingPageDidDetach() <default> add default method: public void containingPageDidAttach() <default> add field: protected final org.apache.tapestry.internal.InternalComponentResources _$resources; replace method: public final org.apache.tapestry.ComponentResources getComponentResources() return _$resources; add method: private void _$write_resouces(org.apache.tapestry.ComponentResources $1) throw new java.lang.RuntimeException("Field com.reged.base.AbstractMenuItem._resouces is read-only."); replace write _resouces: _$write_resouces(); add default method: public void render(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.RenderQueue $2) <default> replace method: public void render(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.RenderQueue $2) _$resources.queueRender($2); extend method: public void postRenderCleanup() _$resources.postRenderCleanup(); add field: private java.lang.String _$displayName_default; extend method: public void containingPageDidLoad() _$displayName_default = _displayName; extend method: public void containingPageDidDetach() _displayName = _$displayName_default; Checking field read _displayName in method getDisplayName(): field not transformed Checking field write _displayName in method setDisplayName(): field not transformed Checking field read _$resources in method postRenderCleanup(): added method Checking field read _displayName in method containingPageDidLoad(): added method Checking field write _$displayName_default in method containingPageDidLoad(): added method Checking field read _$displayName_default in method containingPageDidDetach(): added method Checking field write _displayName in method containingPageDidDetach(): added method Checking field read _$resources in method getComponentResources(): added method Checking field read _$resources in method render(): added method convert default constructor: initializer(); add constructor: com.reged.base.AbstractMenuItem(org.apache.tapestry.internal.InternalCom ponentResources $1) { _$resources = $1; _resouces = _$resources; initializer(); } ] [DEBUG] MenuLink Finished class transformation: InternalClassTransformation[ public com.reged.base.MenuLink extends com.reged.base.AbstractMenuItem implements com.reged.base.ClickableMenuItem add field: private java.lang.Object[] _$context_default; extend method: public void containingPageDidLoad() _$context_default = _context; extend method: public void containingPageDidDetach() _context = _$context_default; add field: private boolean _$popupLink_default; extend method: public void containingPageDidLoad() _$popupLink_default = _popupLink; extend method: public void containingPageDidDetach() _popupLink = _$popupLink_default; convert default constructor: initializer_0(); add constructor: com.reged.base.MenuLink(org.apache.tapestry.internal.InternalComponentRe sources $1) { super($1); initializer_0(); } ] [DEBUG] PageMenuLink Finished class transformation: InternalClassTransformation[ public com.reged.components.nav.PageMenuLink extends com.reged.base.MenuLink add method: private void _$write_resources(org.apache.tapestry.ComponentResources $1) throw new java.lang.RuntimeException("Field com.reged.components.nav.PageMenuLink._resources is read-only."); replace write _resources: _$write_resources(); add method: public void beginRender(org.apache.tapestry.MarkupWriter $1, org.apache.tapestry.runtime.Event $2) { super.beginRender($$); if ($2.isAborted()) return; test(); } add field: private java.lang.String _$page_default; extend method: public void containingPageDidLoad() _$page_default = _page; extend method: public void containingPageDidDetach() _page = _$page_default; Checking field read out in method test(): field not transformed Checking field read _page in method getPage(): field not transformed Checking field write _page in method setPage(): field not transformed Checking field read _page in method containingPageDidLoad(): added method Checking field write _$page_default in method containingPageDidLoad(): added method Checking field read _$page_default in method containingPageDidDetach(): added method Checking field write _page in method containingPageDidDetach(): added method convert default constructor: initializer_1(); add constructor: com.reged.components.nav.PageMenuLink(org.apache.tapestry.internal.Inter nalComponentResources $1) { super($1); _resources = _$resources; initializer_1(); } ] StackTrace: Start Render queue error in [EMAIL PROTECTED]: java.lang.NullPointerException java.lang.NullPointerException at com.reged.base.AbstractMenuItem.render(AbstractMenuItem.java) at org.apache.tapestry.internal.services.RenderQueueImpl.run(RenderQueueImp l.java:58) at org.apache.tapestry.internal.services.PageRenderQueueImpl.render(PageRen derQueueImpl.java:58) at $PageRenderQueue_11779b5a65c.render($PageRenderQueue_11779b5a65c.java) at $PageRenderQueue_11779b5a65a.render($PageRenderQueue_11779b5a65a.java) at org.apache.tapestry.services.TapestryModule$18.renderMarkup(TapestryModu le.java:1320) at org.apache.tapestry.services.TapestryModule$22.renderMarkup(TapestryModu le.java:1431) at $MarkupRenderer_11779b5a660.renderMarkup($MarkupRenderer_11779b5a660.jav a) at org.apache.tapestry.services.TapestryModule$21.renderMarkup(TapestryModu le.java:1412) at $MarkupRenderer_11779b5a660.renderMarkup($MarkupRenderer_11779b5a660.jav a) at org.apache.tapestry.services.TapestryModule$20.renderMarkup(TapestryModu le.java:1394) at $MarkupRenderer_11779b5a660.renderMarkup($MarkupRenderer_11779b5a660.jav a) at org.apache.tapestry.services.TapestryModule$19.renderMarkup(TapestryModu le.java:1376) at $MarkupRenderer_11779b5a660.renderMarkup($MarkupRenderer_11779b5a660.jav a) at $MarkupRenderer_11779b5a659.renderMarkup($MarkupRenderer_11779b5a659.jav a) at org.apache.tapestry.internal.services.PageMarkupRendererImpl.renderPageM arkup(PageMarkupRendererImpl.java:55) at $PageMarkupRenderer_11779b5a657.renderPageMarkup($PageMarkupRenderer_117 79b5a657.java) at org.apache.tapestry.internal.services.PageResponseRendererImpl.renderPag eResponse(PageResponseRendererImpl.java:51) at $PageResponseRenderer_11779b5a613.renderPageResponse($PageResponseRender er_11779b5a613.java) at org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handl e(PageRenderRequestHandlerImpl.java:87) at $PageRenderRequestHandler_11779b5a60f.handle($PageRenderRequestHandler_1 1779b5a60f.java) at org.apache.tapestry.internal.services.RootPathDispatcher.dispatch(RootPa thDispatcher.java:52) at $Dispatcher_11779b5a611.dispatch($Dispatcher_11779b5a611.java) at $Dispatcher_11779b5a605.dispatch($Dispatcher_11779b5a605.java) at org.apache.tapestry.services.TapestryModule$12.service(TapestryModule.ja va:938) at org.apache.tapestry.internal.services.LocalizationFilter.service(Localiz ationFilter.java:43) at $RequestHandler_11779b5a606.service($RequestHandler_11779b5a606.java) at org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.jav a:520) at $RequestHandler_11779b5a606.service($RequestHandler_11779b5a606.java) at org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFi lesFilter.java:79) at $RequestHandler_11779b5a606.service($RequestHandler_11779b5a606.java) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(Che ckForUpdatesFilter.java:94) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(Che ckForUpdatesFilter.java:85) at org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(Concurr entBarrier.java:77) at org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(Chec kForUpdatesFilter.java:107) at $RequestHandler_11779b5a606.service($RequestHandler_11779b5a606.java) at $RequestHandler_11779b5a5fe.service($RequestHandler_11779b5a5fe.java) at org.apache.tapestry.services.TapestryModule$11.service(TapestryModule.ja va:921) at com.reged.traxtools.services.TraxToolsServiceFilter.service(TraxToolsSer viceFilter.java:34) at $HttpServletRequestFilter_11779b5a5fd.service($HttpServletRequestFilter_ 11779b5a5fd.java) at $HttpServletRequestHandler_11779b5a5ff.service($HttpServletRequestHandle r_11779b5a5ff.java) at com.reged.services.JaasTapestryFilter$RegedPrivilegedAction.run(JaasTape stryFilter.java:66) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:454) at com.reged.security.AbstractPrivilegedSecurityManager.doAsPrivileged(Abst ractPrivilegedSecurityManager.java:74) at com.reged.services.JaasTapestryFilter.service(JaasTapestryFilter.java:27 ) at $HttpServletRequestFilter_11779b5a5fc.service($HttpServletRequestFilter_ 11779b5a5fc.java) at $HttpServletRequestHandler_11779b5a5ff.service($HttpServletRequestHandle r_11779b5a5ff.java) at $HttpServletRequestHandler_11779b5a5fb.service($HttpServletRequestHandle r_11779b5a5fb.java) at org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:164) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica tionFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt erChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv e.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv e.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java :127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1 51) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:87 4) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc essConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint .java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow erWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool .java:689) at java.lang.Thread.run(Thread.java:595) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]