You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Raul Raja Martinez <do...@estudiowebs.com> on 2006/01/24 10:09:50 UTC
Possible bug: Property " " has already been accounted for by the
element at Annotation ...
Hi I believe that I'm getting a similar behavior as described in
http://issues.apache.org/jira/browse/TAPESTRY-696
with T4 final.
I have been unable to write a test to reproduce the error since it
happens randomly which makes me thing that it happens when classes are
enhanced. I have checked all my classes and
com.estudiowebs.CMS.components.AbstractCMSComponent is the only place
where that property is declared.
Here is my code:
public abstract class AbstractCMSComponent extends BaseComponent {
@InjectPage("News")
public abstract News getNewsPage();
}
public abstract class AbstractCategoryLinker extends AbstractCMSComponent {
public IPage onClickMenuItem() {
Contact cp = getContactPage();
return cp;
}
public abstract class MenuNavigation extends AbstractCategoryLinker {
}
Here is the stack trace:
org.apache.hivemind.ApplicationRuntimeException
Property newsPage has already been accounted for by the element at
Annotation @org.apache.tapestry.annotations.InjectPage(value=News) of
public abstract com.estudiowebs.CMS.pages.News
com.estudiowebs.CMS.components.AbstractCMSComponent.getNewsPage().
location: Annotation
@org.apache.tapestry.annotations.InjectPage(value=News) of public
abstract com.estudiowebs.CMS.pages.News
com.estudiowebs.CMS.components.AbstractCMSComponent.getNewsPage()
Stack Trace:
*
org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674)
*
org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645)
*
org.apache.tapestry.annotations.InjectPageAnnotationWorker.performEnhancement(InjectPageAnnotationWorker.java:50)
*
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMethodEnhancement(AnnotationEnhancementWorker.java:142)
*
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMethodEnhancement(AnnotationEnhancementWorker.java:110)
*
org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhancement(AnnotationEnhancementWorker.java:70)
*
$EnhancementWorker_108fb922aed.performEnhancement($EnhancementWorker_108fb922aed.java)
*
$EnhancementWorker_108fb922aef.performEnhancement($EnhancementWorker_108fb922aef.java)
*
$EnhancementWorker_108fb922acb.performEnhancement($EnhancementWorker_108fb922acb.java)
*
org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97)
*
$ComponentConstructorFactory_108fb922ab8.getComponentConstructor($ComponentConstructorFactory_108fb922ab8.java)
*
org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531)
*
org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:401)
*
org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:494)
*
$IPageLoader_108fb922aa8.createImplicitComponent($IPageLoader_108fb922aa8.java)
*
$IPageLoader_108fb922aa9.createImplicitComponent($IPageLoader_108fb922aa9.java)
*
org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.createImplicitComponent(ComponentTemplateLoaderLogic.java:218)
*
org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(ComponentTemplateLoaderLogic.java:172)
*
org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(ComponentTemplateLoaderLogic.java:111)
*
org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.loadTemplate(ComponentTemplateLoaderLogic.java:88)
*
org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTemplate(ComponentTemplateLoaderImpl.java:60)
*
$ComponentTemplateLoader_108fb922abc.loadTemplate($ComponentTemplateLoader_108fb922abc.java)
*
org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent(PageLoader.java:648)
* org.apache.tapestry.BaseComponent.readTemplate(BaseComponent.java:77)
* org.apache.tapestry.BaseComponent.finishLoad(BaseComponent.java:107)
* $Contact_470.finishLoad($Contact_470.java)
*
org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:439)
* org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613)
* $IPageLoader_108fb922aa8.loadPage($IPageLoader_108fb922aa8.java)
* $IPageLoader_108fb922aa9.loadPage($IPageLoader_108fb922aa9.java)
* org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120)
* $IPageSource_108fb922a07.getPage($IPageSource_108fb922a07.java)
*
org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268)
*
org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251)
* $MenuNavigation_464.getContactPage($MenuNavigation_464.java)
*
com.estudiowebs.CMS.components.AbstractCategoryLinker.onClickMenuItem(AbstractCategoryLinker.java:20)
* sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
*
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
*
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
* java.lang.reflect.Method.invoke(Method.java:585)
*
org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeTargetMethod(ListenerMethodInvokerImpl.java:214)
*
org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:155)
*
org.apache.tapestry.listener.ListenerMethodInvokerImpl.searchAndInvoke(ListenerMethodInvokerImpl.java:124)
*
org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:65)
*
org.apache.tapestry.listener.SyntheticListener.actionTriggered(SyntheticListener.java:51)
*
org.apache.tapestry.binding.ListenerMethodBinding.actionTriggered(ListenerMethodBinding.java:77)
*
org.apache.tapestry.listener.ListenerInvokerTerminator.invokeListener(ListenerInvokerTerminator.java:51)
*
$ListenerInvoker_108fb922a35.invokeListener($ListenerInvoker_108fb922a35.java)
* org.apache.tapestry.link.DirectLink.trigger(DirectLink.java:105)
*
org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146)
*
org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
* $IEngineService_108fb922a92.service($IEngineService_108fb922a92.java)
*
org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
*
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
*
org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
*
$WebRequestServicer_108fb922a6b.service($WebRequestServicer_108fb922a6b.java)
*
org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:48)
*
$WebRequestServicerFilter_108fb922a6d.service($WebRequestServicerFilter_108fb922a6d.java)
*
$WebRequestServicer_108fb922a6f.service($WebRequestServicer_108fb922a6f.java)
*
$WebRequestServicer_108fb922a67.service($WebRequestServicer_108fb922a67.java)
*
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
*
$ServletRequestServicer_108fb922a4b.service($ServletRequestServicer_108fb922a4b.java)
*
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
*
$ServletRequestServicerFilter_108fb922a47.service($ServletRequestServicerFilter_108fb922a47.java)
*
$ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
*
org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
*
$ServletRequestServicerFilter_108fb922a45.service($ServletRequestServicerFilter_108fb922a45.java)
*
$ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
*
org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
*
$ServletRequestServicerFilter_108fb922a49.service($ServletRequestServicerFilter_108fb922a49.java)
*
$ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
*
$ServletRequestServicer_108fb922a3f.service($ServletRequestServicer_108fb922a3f.java)
*
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
*
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:79)
* javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
* javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
*
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
*
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
*
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
*
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
*
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
*
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
*
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
*
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
*
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
*
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
*
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
*
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
*
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
*
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
*
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
*
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
*
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
* java.lang.Thread.run(Thread.java:613)
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
Re: Possible bug: Property " " has already been accounted for by
the element at Annotation ...
Posted by Raul Raja Martinez <do...@estudiowebs.com>.
I have posted a issue in JIRA at:
https://issues.apache.org/jira/browse/TAPESTRY-846
Raul Raja Martinez wrote:
> Hi I believe that I'm getting a similar behavior as described in
> http://issues.apache.org/jira/browse/TAPESTRY-696
> with T4 final.
> I have been unable to write a test to reproduce the error since it
> happens randomly which makes me thing that it happens when classes are
> enhanced. I have checked all my classes and
> com.estudiowebs.CMS.components.AbstractCMSComponent is the only place
> where that property is declared.
>
> Here is my code:
>
> public abstract class AbstractCMSComponent extends BaseComponent {
>
> @InjectPage("News")
> public abstract News getNewsPage();
>
> }
>
> public abstract class AbstractCategoryLinker extends AbstractCMSComponent {
>
> public IPage onClickMenuItem() {
> Contact cp = getContactPage();
> return cp;
> }
>
> public abstract class MenuNavigation extends AbstractCategoryLinker {
>
>
> }
>
>
> Here is the stack trace:
>
> org.apache.hivemind.ApplicationRuntimeException
> Property newsPage has already been accounted for by the element at
> Annotation @org.apache.tapestry.annotations.InjectPage(value=News) of
> public abstract com.estudiowebs.CMS.pages.News
> com.estudiowebs.CMS.components.AbstractCMSComponent.getNewsPage().
> location: Annotation
> @org.apache.tapestry.annotations.InjectPage(value=News) of public
> abstract com.estudiowebs.CMS.pages.News
> com.estudiowebs.CMS.components.AbstractCMSComponent.getNewsPage()
> Stack Trace:
>
> *
> org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674)
>
> *
> org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645)
>
> *
> org.apache.tapestry.annotations.InjectPageAnnotationWorker.performEnhancement(InjectPageAnnotationWorker.java:50)
>
> *
> org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMethodEnhancement(AnnotationEnhancementWorker.java:142)
>
> *
> org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMethodEnhancement(AnnotationEnhancementWorker.java:110)
>
> *
> org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhancement(AnnotationEnhancementWorker.java:70)
>
> *
> $EnhancementWorker_108fb922aed.performEnhancement($EnhancementWorker_108fb922aed.java)
>
> *
> $EnhancementWorker_108fb922aef.performEnhancement($EnhancementWorker_108fb922aef.java)
>
> *
> $EnhancementWorker_108fb922acb.performEnhancement($EnhancementWorker_108fb922acb.java)
>
> *
> org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97)
>
> *
> $ComponentConstructorFactory_108fb922ab8.getComponentConstructor($ComponentConstructorFactory_108fb922ab8.java)
>
> *
> org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531)
>
> *
> org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:401)
>
> *
> org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:494)
>
> *
> $IPageLoader_108fb922aa8.createImplicitComponent($IPageLoader_108fb922aa8.java)
>
> *
> $IPageLoader_108fb922aa9.createImplicitComponent($IPageLoader_108fb922aa9.java)
>
> *
> org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.createImplicitComponent(ComponentTemplateLoaderLogic.java:218)
>
> *
> org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(ComponentTemplateLoaderLogic.java:172)
>
> *
> org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(ComponentTemplateLoaderLogic.java:111)
>
> *
> org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.loadTemplate(ComponentTemplateLoaderLogic.java:88)
>
> *
> org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTemplate(ComponentTemplateLoaderImpl.java:60)
>
> *
> $ComponentTemplateLoader_108fb922abc.loadTemplate($ComponentTemplateLoader_108fb922abc.java)
>
> *
> org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent(PageLoader.java:648)
>
> * org.apache.tapestry.BaseComponent.readTemplate(BaseComponent.java:77)
> * org.apache.tapestry.BaseComponent.finishLoad(BaseComponent.java:107)
> * $Contact_470.finishLoad($Contact_470.java)
> *
> org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:439)
>
> * org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613)
> * $IPageLoader_108fb922aa8.loadPage($IPageLoader_108fb922aa8.java)
> * $IPageLoader_108fb922aa9.loadPage($IPageLoader_108fb922aa9.java)
> * org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120)
> * $IPageSource_108fb922a07.getPage($IPageSource_108fb922a07.java)
> *
> org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268)
> *
> org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251)
> * $MenuNavigation_464.getContactPage($MenuNavigation_464.java)
> *
> com.estudiowebs.CMS.components.AbstractCategoryLinker.onClickMenuItem(AbstractCategoryLinker.java:20)
>
> * sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> *
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> *
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> * java.lang.reflect.Method.invoke(Method.java:585)
> *
> org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeTargetMethod(ListenerMethodInvokerImpl.java:214)
>
> *
> org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:155)
>
> *
> org.apache.tapestry.listener.ListenerMethodInvokerImpl.searchAndInvoke(ListenerMethodInvokerImpl.java:124)
>
> *
> org.apache.tapestry.listener.ListenerMethodInvokerImpl.invokeListenerMethod(ListenerMethodInvokerImpl.java:65)
>
> *
> org.apache.tapestry.listener.SyntheticListener.actionTriggered(SyntheticListener.java:51)
>
> *
> org.apache.tapestry.binding.ListenerMethodBinding.actionTriggered(ListenerMethodBinding.java:77)
>
> *
> org.apache.tapestry.listener.ListenerInvokerTerminator.invokeListener(ListenerInvokerTerminator.java:51)
>
> *
> $ListenerInvoker_108fb922a35.invokeListener($ListenerInvoker_108fb922a35.java)
>
> * org.apache.tapestry.link.DirectLink.trigger(DirectLink.java:105)
> *
> org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146)
>
> *
> org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
> * $IEngineService_108fb922a92.service($IEngineService_108fb922a92.java)
> *
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
>
> *
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
> *
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
>
> *
> $WebRequestServicer_108fb922a6b.service($WebRequestServicer_108fb922a6b.java)
>
> *
> org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:48)
>
> *
> $WebRequestServicerFilter_108fb922a6d.service($WebRequestServicerFilter_108fb922a6d.java)
>
> *
> $WebRequestServicer_108fb922a6f.service($WebRequestServicer_108fb922a6f.java)
>
> *
> $WebRequestServicer_108fb922a67.service($WebRequestServicer_108fb922a67.java)
>
> *
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
>
> *
> $ServletRequestServicer_108fb922a4b.service($ServletRequestServicer_108fb922a4b.java)
>
> *
> org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
>
> *
> $ServletRequestServicerFilter_108fb922a47.service($ServletRequestServicerFilter_108fb922a47.java)
>
> *
> $ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
>
> *
> org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
>
> *
> $ServletRequestServicerFilter_108fb922a45.service($ServletRequestServicerFilter_108fb922a45.java)
>
> *
> $ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
>
> *
> org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
>
> *
> $ServletRequestServicerFilter_108fb922a49.service($ServletRequestServicerFilter_108fb922a49.java)
>
> *
> $ServletRequestServicer_108fb922a4d.service($ServletRequestServicer_108fb922a4d.java)
>
> *
> $ServletRequestServicer_108fb922a3f.service($ServletRequestServicer_108fb922a3f.java)
>
> *
> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
>
> *
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:79)
> * javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> * javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> *
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>
> *
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> *
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)
>
> *
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>
> *
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>
> *
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> *
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>
> *
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>
> *
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>
> *
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>
> *
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>
> *
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> *
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
> *
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>
> *
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>
> *
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>
> *
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>
> * java.lang.Thread.run(Thread.java:613)
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org