Tapestry
  1. Tapestry
  2. TAPESTRY-846

Random error accesing pages: Property " " has already been accounted for by the element at Annotation ...

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 4.0
    • Fix Version/s: 4.1.1
    • Component/s: Annotations
    • Labels:
      None
    • Environment:
      Linux, OS X, WXP

      Description

      As posted in Tapestry mailing list:

      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)

        Issue Links

          Activity

          Hide
          Chris Chiappone added a comment -

          I have also recieved a similiar exception with Tapestry 4.0. I originally thought it had something to do with the form that I have but it ended up being random behavior. Here is the exception:

          Error: An error occured processing annotation
          @org.apache.tapestry.annotations.InjectState(value=visit) of public
          abstract view.Visit view.components.NavLogin.getVisitObject():
          Property visitObject has already been accounted for by the element at
          Annotation @org.apache.tapestry.annotations.InjectState(value=visit)
          of public abstract view.Visit
          view.components.NavLogin.getVisitObject().
          location: Annotation
          @org.apache.tapestry.annotations.InjectState(value=visit) of public
          abstract view.Visit view.components.NavLogin.getVisitObject()

          org.apache.hivemind.ApplicationRuntimeException
          Property visitObject has already been accounted for by the element at
          Annotation @org.apache.tapestry.annotations.InjectState(value=visit)
          of public abstract view.Visit
          view.components.NavLogin.getVisitObject().
          location: Annotation
          @org.apache.tapestry.annotations.InjectState(value=visit) of public
          abstract view.Visit view.components.NavLogin.getVisitObject()

          org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674)
          org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645)
          org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhancement(InjectStateAnnotationWorker.java:49)
          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_10902ea6ec2.performEnhancement($EnhancementWorker_10902ea6ec2.java)
          $EnhancementWorker_10902ea6ec4.performEnhancement($EnhancementWorker_10902ea6ec4.java)
          $EnhancementWorker_10902ea6ea4.performEnhancement($EnhancementWorker_10902ea6ea4.java)
          org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97)
          $ComponentConstructorFactory_10902ea6e91.getComponentConstructor($ComponentConstructorFactory_10902ea6e91.java)
          org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531)
          org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:401)
          org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:421)
          org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613)
          $IPageLoader_10902ea6e8b.loadPage($IPageLoader_10902ea6e8b.java)
          $IPageLoader_10902ea6e8c.loadPage($IPageLoader_10902ea6e8c.java)
          org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120)
          $IPageSource_10902ea6de7.getPage($IPageSource_10902ea6de7.java)
          org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268)
          org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251)
          $Search_2047.getSearchResultsPage($Search_2047.java)

          Show
          Chris Chiappone added a comment - I have also recieved a similiar exception with Tapestry 4.0. I originally thought it had something to do with the form that I have but it ended up being random behavior. Here is the exception: Error: An error occured processing annotation @org.apache.tapestry.annotations.InjectState(value=visit) of public abstract view.Visit view.components.NavLogin.getVisitObject(): Property visitObject has already been accounted for by the element at Annotation @org.apache.tapestry.annotations.InjectState(value=visit) of public abstract view.Visit view.components.NavLogin.getVisitObject(). location: Annotation @org.apache.tapestry.annotations.InjectState(value=visit) of public abstract view.Visit view.components.NavLogin.getVisitObject() org.apache.hivemind.ApplicationRuntimeException Property visitObject has already been accounted for by the element at Annotation @org.apache.tapestry.annotations.InjectState(value=visit) of public abstract view.Visit view.components.NavLogin.getVisitObject(). location: Annotation @org.apache.tapestry.annotations.InjectState(value=visit) of public abstract view.Visit view.components.NavLogin.getVisitObject() org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674) org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645) org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhancement(InjectStateAnnotationWorker.java:49) 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_10902ea6ec2.performEnhancement($EnhancementWorker_10902ea6ec2.java) $EnhancementWorker_10902ea6ec4.performEnhancement($EnhancementWorker_10902ea6ec4.java) $EnhancementWorker_10902ea6ea4.performEnhancement($EnhancementWorker_10902ea6ea4.java) org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97) $ComponentConstructorFactory_10902ea6e91.getComponentConstructor($ComponentConstructorFactory_10902ea6e91.java) org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531) org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:401) org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:421) org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613) $IPageLoader_10902ea6e8b.loadPage($IPageLoader_10902ea6e8b.java) $IPageLoader_10902ea6e8c.loadPage($IPageLoader_10902ea6e8c.java) org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120) $IPageSource_10902ea6de7.getPage($IPageSource_10902ea6de7.java) org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268) org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251) $Search_2047.getSearchResultsPage($Search_2047.java)
          Hide
          Anthony Wang added a comment -
          Show
          Anthony Wang added a comment - I've also encountered it - see https://issues.apache.org/jira/browse/TAPESTRY-696
          Hide
          Chris Chiappone added a comment -

          This is actually becoming way more of a problem than I originally expected. Here is an entry I made in the tapestry list describing more of the issue:

          At first I thought I could work around these issues but they seem to
          be popping up more and more throughout my application. Its really
          becoming an issue for me.

          Ever since I have moved from .page and .jwc files to annotations I get
          these exceptions more often.

          I don't believe I am doing anything wrong with these annotations. As
          you can see by the following one I have just declared a DelegateBean
          in my class. Using

          @Bean(SimpleValidationDeleage)
          public abstract SimpleValidationDelegate getDelegate();

          That same Delegate is used on mulitple pages and in components. From
          what I understand this should be acceptable.

          This issue also has sprung up on my declaring the same Persistent
          property on different pages or components using the @Persist
          annotation.

          I didn't run into these problems before I used annotations. I'd also
          hate to have to go back to .page and .jwc files since there are so
          many files that I've changed.

          Here is an one of the exceptions:

          Exception invoking listener method searchLinkListener of component
          SearchResults/border.search: Error: An error occured processing
          annotation @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate(): Bean delegate has already
          been declared (at Annotation
          @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate()).
          binding: org.apache.tapestry.binding.ListenerMethodBinding@fe8153[template
          parameter listener, component=SearchResults/border.search,
          methodName=searchLinkListener,
          location=context:/WEB-INF/BasicSearch.html, line 16]
          component: $BasicSearch_181@4c72e3[SearchResults/border.search]
          location: context:/WEB-INF/BasicSearch.html, line 16
          11 <br>
          12 <input jwcid="companyField"
          13 autocomplete="off" size="20" id="txt1" /> <br>
          14 <input jwcid="@Submit" name="Submit" label="message:submit" /></form>
          15
          16 <a jwcid="@DirectLink" listener="listener:searchLinkListener">
          17 » <span key="advanced">Advanced</span>
          18 </a>
          19 </div>
          20 </td>
          21 </tr>

          org.apache.hivemind.ApplicationRuntimeException
          Error: An error occured processing annotation
          @org.apache.tapestry.annotations.Bean(value=class
          util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of
          public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate(): Bean delegate has already
          been declared (at Annotation
          @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate()).
          location: Annotation @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate()

          org.apache.hivemind.ApplicationRuntimeException
          Bean delegate has already been declared (at Annotation
          @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate()).
          location: Annotation @org.apache.tapestry.annotations.Bean(value=class
          view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=)
          of public abstract view.util.SimpleValidationDelegate
          view.components.BasicSearch.getDelegate()
          Stack Trace:
          org.apache.tapestry.spec.ComponentSpecification.addBeanSpecification(ComponentSpecification.java:410)
          org.apache.tapestry.annotations.BeanAnnotationWorker.performEnhancement(BeanAnnotationWorker.java:64)
          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_1090cd8cc4b.performEnhancement($EnhancementWorker_1090cd8cc4b.java)
          $EnhancementWorker_1090cd8cc4d.performEnhancement($EnhancementWorker_1090cd8cc4d.java)
          $EnhancementWorker_1090cd8cc2d.performEnhancement($EnhancementWorker_1090cd8cc2d.java)
          org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97)
          $ComponentConstructorFactory_1090cd8cc1a.getComponentConstructor($ComponentConstructorFactory_1090cd8cc1a.java)
          org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531)
          org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:481)

          Show
          Chris Chiappone added a comment - This is actually becoming way more of a problem than I originally expected. Here is an entry I made in the tapestry list describing more of the issue: At first I thought I could work around these issues but they seem to be popping up more and more throughout my application. Its really becoming an issue for me. Ever since I have moved from .page and .jwc files to annotations I get these exceptions more often. I don't believe I am doing anything wrong with these annotations. As you can see by the following one I have just declared a DelegateBean in my class. Using @Bean(SimpleValidationDeleage) public abstract SimpleValidationDelegate getDelegate(); That same Delegate is used on mulitple pages and in components. From what I understand this should be acceptable. This issue also has sprung up on my declaring the same Persistent property on different pages or components using the @Persist annotation. I didn't run into these problems before I used annotations. I'd also hate to have to go back to .page and .jwc files since there are so many files that I've changed. Here is an one of the exceptions: Exception invoking listener method searchLinkListener of component SearchResults/border.search: Error: An error occured processing annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate(): Bean delegate has already been declared (at Annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate()). binding: org.apache.tapestry.binding.ListenerMethodBinding@fe8153[template parameter listener, component=SearchResults/border.search, methodName=searchLinkListener, location=context:/WEB-INF/BasicSearch.html, line 16] component: $BasicSearch_181@4c72e3 [SearchResults/border.search] location: context:/WEB-INF/BasicSearch.html, line 16 11 <br> 12 <input jwcid="companyField" 13 autocomplete="off" size="20" id="txt1" /> <br> 14 <input jwcid="@Submit" name="Submit" label="message:submit" /></form> 15 16 <a jwcid="@DirectLink" listener="listener:searchLinkListener"> 17 » <span key="advanced">Advanced</span> 18 </a> 19 </div> 20 </td> 21 </tr> org.apache.hivemind.ApplicationRuntimeException Error: An error occured processing annotation @org.apache.tapestry.annotations.Bean(value=class util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate(): Bean delegate has already been declared (at Annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate()). location: Annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate() org.apache.hivemind.ApplicationRuntimeException Bean delegate has already been declared (at Annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate()). location: Annotation @org.apache.tapestry.annotations.Bean(value=class view.util.SimpleValidationDelegate, lifecycle=REQUEST, initializer=) of public abstract view.util.SimpleValidationDelegate view.components.BasicSearch.getDelegate() Stack Trace: org.apache.tapestry.spec.ComponentSpecification.addBeanSpecification(ComponentSpecification.java:410) org.apache.tapestry.annotations.BeanAnnotationWorker.performEnhancement(BeanAnnotationWorker.java:64) 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_1090cd8cc4b.performEnhancement($EnhancementWorker_1090cd8cc4b.java) $EnhancementWorker_1090cd8cc4d.performEnhancement($EnhancementWorker_1090cd8cc4d.java) $EnhancementWorker_1090cd8cc2d.performEnhancement($EnhancementWorker_1090cd8cc2d.java) org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97) $ComponentConstructorFactory_1090cd8cc1a.getComponentConstructor($ComponentConstructorFactory_1090cd8cc1a.java) org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531) org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:481)
          Hide
          Chris Chiappone added a comment -

          I realize that this issue actually varies from the initial bug that was opened. I will move this to a new JIRA Issue

          Show
          Chris Chiappone added a comment - I realize that this issue actually varies from the initial bug that was opened. I will move this to a new JIRA Issue
          Hide
          Martin Dirichs added a comment -

          Also got biten by this issue (with tapestry-4.0).
          https://issues.apache.org/jira/browse/TAPESTRY-696
          really seems to be closely related, but there must be a different root cause than the
          one fixed there.

          I did some experiments and found out three things so far:

          1. For me, the error only occurs with -Dorg.apache.tapestry.disable-caching=true.
          2. It's quite definitely a race condition since the error occurs only occasionally.
          3. There must be another issue than the one fixed in TAPESTRY-696.

          In TAPESTRY-696, the solution seemed to be a synchonized block within
          org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor().
          Out of curiosity, I declared the whole method as synchronized, but the error still
          persisted.

          Stack trace follows:
          org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674)
          org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645)
          org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhancement(InjectStateAnnotationWorker.java:49)
          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_10a1c4933f5.performEnhancement($EnhancementWorker_10a1c4933f5.java)
          $EnhancementWorker_10a1c4933fb.performEnhancement($EnhancementWorker_10a1c4933fb.java)
          $EnhancementWorker_10a1c4933d7.performEnhancement($EnhancementWorker_10a1c4933d7.java)
          org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97)
          $ComponentConstructorFactory_10a1c4933c4.getComponentConstructor($ComponentConstructorFactory_10a1c4933c4.java)
          org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531)
          org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:481)
          $IPageLoader_10a1c4933b4.createImplicitComponent($IPageLoader_10a1c4933b4.java)
          $IPageLoader_10a1c4933b5.createImplicitComponent($IPageLoader_10a1c4933b5.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_10a1c4933c8.loadTemplate($ComponentTemplateLoader_10a1c4933c8.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)
          $CustomerDetail_218.finishLoad($CustomerDetail_218.java)
          org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:439)
          org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613)
          $IPageLoader_10a1c4933b4.loadPage($IPageLoader_10a1c4933b4.java)
          $IPageLoader_10a1c4933b5.loadPage($IPageLoader_10a1c4933b5.java)
          org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120)
          $IPageSource_10a1c493317.getPage($IPageSource_10a1c493317.java)
          org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268)
          org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251)
          org.apache.tapestry.engine.ExternalService.service(ExternalService.java:139)
          $IEngineService_10a1c4933ac.service($IEngineService_10a1c4933ac.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_10a1c49337b.service($WebRequestServicer_10a1c49337b.java)
          org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:48)
          $WebRequestServicerFilter_10a1c49337d.service($WebRequestServicerFilter_10a1c49337d.java)
          $WebRequestServicer_10a1c49337f.service($WebRequestServicer_10a1c49337f.java)
          $WebRequestServicer_10a1c493377.service($WebRequestServicer_10a1c493377.java)
          org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
          $ServletRequestServicer_10a1c49335b.service($ServletRequestServicer_10a1c49335b.java)
          org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
          $ServletRequestServicerFilter_10a1c493357.service($ServletRequestServicerFilter_10a1c493357.java)
          $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java)
          org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
          $ServletRequestServicerFilter_10a1c493355.service($ServletRequestServicerFilter_10a1c493355.java)
          $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java)
          org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
          $ServletRequestServicerFilter_10a1c493359.service($ServletRequestServicerFilter_10a1c493359.java)
          $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java)
          $ServletRequestServicer_10a1c49334f.service($ServletRequestServicer_10a1c49334f.java)
          org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
          ...

          Show
          Martin Dirichs added a comment - Also got biten by this issue (with tapestry-4.0). https://issues.apache.org/jira/browse/TAPESTRY-696 really seems to be closely related, but there must be a different root cause than the one fixed there. I did some experiments and found out three things so far: 1. For me, the error only occurs with -Dorg.apache.tapestry.disable-caching=true. 2. It's quite definitely a race condition since the error occurs only occasionally. 3. There must be another issue than the one fixed in TAPESTRY-696 . In TAPESTRY-696 , the solution seemed to be a synchonized block within org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(). Out of curiosity, I declared the whole method as synchronized, but the error still persisted. Stack trace follows: org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentSpecification.java:674) org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(ComponentSpecification.java:645) org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhancement(InjectStateAnnotationWorker.java:49) 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_10a1c4933f5.performEnhancement($EnhancementWorker_10a1c4933f5.java) $EnhancementWorker_10a1c4933fb.performEnhancement($EnhancementWorker_10a1c4933fb.java) $EnhancementWorker_10a1c4933d7.performEnhancement($EnhancementWorker_10a1c4933d7.java) org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:97) $ComponentConstructorFactory_10a1c4933c4.getComponentConstructor($ComponentConstructorFactory_10a1c4933c4.java) org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader.java:531) org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoader.java:481) $IPageLoader_10a1c4933b4.createImplicitComponent($IPageLoader_10a1c4933b4.java) $IPageLoader_10a1c4933b5.createImplicitComponent($IPageLoader_10a1c4933b5.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_10a1c4933c8.loadTemplate($ComponentTemplateLoader_10a1c4933c8.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) $CustomerDetail_218.finishLoad($CustomerDetail_218.java) org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:439) org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613) $IPageLoader_10a1c4933b4.loadPage($IPageLoader_10a1c4933b4.java) $IPageLoader_10a1c4933b5.loadPage($IPageLoader_10a1c4933b5.java) org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120) $IPageSource_10a1c493317.getPage($IPageSource_10a1c493317.java) org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268) org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251) org.apache.tapestry.engine.ExternalService.service(ExternalService.java:139) $IEngineService_10a1c4933ac.service($IEngineService_10a1c4933ac.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_10a1c49337b.service($WebRequestServicer_10a1c49337b.java) org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:48) $WebRequestServicerFilter_10a1c49337d.service($WebRequestServicerFilter_10a1c49337d.java) $WebRequestServicer_10a1c49337f.service($WebRequestServicer_10a1c49337f.java) $WebRequestServicer_10a1c493377.service($WebRequestServicer_10a1c493377.java) org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56) $ServletRequestServicer_10a1c49335b.service($ServletRequestServicer_10a1c49335b.java) org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55) $ServletRequestServicerFilter_10a1c493357.service($ServletRequestServicerFilter_10a1c493357.java) $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java) org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52) $ServletRequestServicerFilter_10a1c493355.service($ServletRequestServicerFilter_10a1c493355.java) $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java) org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53) $ServletRequestServicerFilter_10a1c493359.service($ServletRequestServicerFilter_10a1c493359.java) $ServletRequestServicer_10a1c49335d.service($ServletRequestServicer_10a1c49335d.java) $ServletRequestServicer_10a1c49334f.service($ServletRequestServicer_10a1c49334f.java) org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123) ...
          Hide
          Kent Tong added a comment -

          I think this issue is a duplicate of https://issues.apache.org/jira/browse/TAPESTRY-403

          Show
          Kent Tong added a comment - I think this issue is a duplicate of https://issues.apache.org/jira/browse/TAPESTRY-403
          Hide
          Martin Dirichs added a comment -

          Although TAPESTRY-403 is also a binding issue, I should be very suprised if it is related to this error. TAPESTRY-403 is an easily reproducible misbehaviour that causes some bindings in the page specification to fail silently if an identical binding is found in the page template. In contrast, TAPESTRY-846 only happens from time to time, which makes it extremely difficult to reproduce it or to file an example illustrating the error reliably. Also, this error shows up as an exception with stack traces as shown above - not something failing silently.

          Show
          Martin Dirichs added a comment - Although TAPESTRY-403 is also a binding issue, I should be very suprised if it is related to this error. TAPESTRY-403 is an easily reproducible misbehaviour that causes some bindings in the page specification to fail silently if an identical binding is found in the page template. In contrast, TAPESTRY-846 only happens from time to time, which makes it extremely difficult to reproduce it or to file an example illustrating the error reliably. Also, this error shows up as an exception with stack traces as shown above - not something failing silently.
          Hide
          Kent Tong added a comment -

          Sorry, I meant TAPESTRY-848, not TAPESTRY-403!

          Show
          Kent Tong added a comment - Sorry, I meant TAPESTRY-848 , not TAPESTRY-403 !
          Hide
          Michael Prescott added a comment -

          I'm getting this issue as well; same stack trace as posted in the original description.

          Show
          Michael Prescott added a comment - I'm getting this issue as well; same stack trace as posted in the original description.
          Hide
          Jesse Kuhnert added a comment -

          Ouch...7 votes. Guess I better get on this one then ..

          Show
          Jesse Kuhnert added a comment - Ouch...7 votes. Guess I better get on this one then ..
          Hide
          Jeff Lubetkin added a comment -

          I recently tracked down a problem in Zillow's code that has the same symptoms as TAPESTRY-846, and may be caused by a similar problem.

          We use a custom SpecificationResolverDelegate to keep our templates in WEB-INF. I've documented the approach on the wiki: http://wiki.apache.org/tapestry/SpeclessPagesInWEB-INF. We would get the exception from TAPESTRY-846 when our performance testers would hit a new, previously unloaded page with substantial load. Simply requesting the page once before starting the test would prevent the issue. I tracked the problem down to the custom resolver's setupImplicitPage method. If two threads tried to load for the first time a new page simultaneously, two implicit ComponentSpecifications would be created. Having two spec objects for the same page caused the "synchronized( specification )" to fail in ComponentConstructorFactoryImpl.getComponentConstructor, causing the same component to be enhanced twice, resulting in the exception.

          I fixed this in our code by synchronizing AppSpecRelativeSpecificationResolverDelegate.setupImplicitPage and storing the created implicit ComponentSpecifications in a map keyed on the simpleName parameter. The method checks the map first, guaranteeing that each page will only ever have one implicit spec object created. We can no longer reproduce the exception.

          I've looked at the code for PageSpecificationResolverImpl.setupImplicitPage, and I think it's subject to the same problem. If two requests for the same implicitly-specced page get past the call to namespace.containsPage in the resolve method, two implict spec objects will be created and the getComponentConstructor syncronization will fail. This may be what people are seeing, but since we don't use that code I don't know for sure.

          Show
          Jeff Lubetkin added a comment - I recently tracked down a problem in Zillow's code that has the same symptoms as TAPESTRY-846 , and may be caused by a similar problem. We use a custom SpecificationResolverDelegate to keep our templates in WEB-INF. I've documented the approach on the wiki: http://wiki.apache.org/tapestry/SpeclessPagesInWEB-INF . We would get the exception from TAPESTRY-846 when our performance testers would hit a new, previously unloaded page with substantial load. Simply requesting the page once before starting the test would prevent the issue. I tracked the problem down to the custom resolver's setupImplicitPage method. If two threads tried to load for the first time a new page simultaneously, two implicit ComponentSpecifications would be created. Having two spec objects for the same page caused the "synchronized( specification )" to fail in ComponentConstructorFactoryImpl.getComponentConstructor, causing the same component to be enhanced twice, resulting in the exception. I fixed this in our code by synchronizing AppSpecRelativeSpecificationResolverDelegate.setupImplicitPage and storing the created implicit ComponentSpecifications in a map keyed on the simpleName parameter. The method checks the map first, guaranteeing that each page will only ever have one implicit spec object created. We can no longer reproduce the exception. I've looked at the code for PageSpecificationResolverImpl.setupImplicitPage, and I think it's subject to the same problem. If two requests for the same implicitly-specced page get past the call to namespace.containsPage in the resolve method, two implict spec objects will be created and the getComponentConstructor syncronization will fail. This may be what people are seeing, but since we don't use that code I don't know for sure.
          Hide
          Jesse Kuhnert added a comment -

          Thanks Jeff, that certainly narrows down the scope of search....I'll even get to use some of the testng parallelizing features to test!

          Show
          Jesse Kuhnert added a comment - Thanks Jeff, that certainly narrows down the scope of search....I'll even get to use some of the testng parallelizing features to test!
          Hide
          Jesse Kuhnert added a comment -

          May have fixed this finally. Guess only time and more bug reports will tell.

          Also introduced a new dependency on backport-util-concurrent. Snapshot should be out tonight.

          Tested on true multi proc and single proc machine with same good results so I feel ok thinking this one is resolved (efficiently).

          Show
          Jesse Kuhnert added a comment - May have fixed this finally. Guess only time and more bug reports will tell. Also introduced a new dependency on backport-util-concurrent. Snapshot should be out tonight. Tested on true multi proc and single proc machine with same good results so I feel ok thinking this one is resolved (efficiently).
          Hide
          Marco Von Ballmoos added a comment -

          We've been experiencing this problem during development (when caching is shut off) as well. I'm using Tapestry 4.02 and am wondering what's the best way to proceed? Can this fix be back-patched to 4.02? Do I have to wait for 4.1.1? What kind of changes can I expect to have to make if I upgrade? Thanks in advance.

          Show
          Marco Von Ballmoos added a comment - We've been experiencing this problem during development (when caching is shut off) as well. I'm using Tapestry 4.02 and am wondering what's the best way to proceed? Can this fix be back-patched to 4.02? Do I have to wait for 4.1.1? What kind of changes can I expect to have to make if I upgrade? Thanks in advance.
          Hide
          Jan Normann Nielsen added a comment -

          Due to my experiences elaborated in TAPESTRY-848, I suspect that TAPESTRY-846 hasn't been fixed (at least the fix doesn't work for T4.0.2), and in fact, the fix doesn't result in any noticable changes at all. You might consider reverting them, especially because they introduced a new dependency.

          Show
          Jan Normann Nielsen added a comment - Due to my experiences elaborated in TAPESTRY-848 , I suspect that TAPESTRY-846 hasn't been fixed (at least the fix doesn't work for T4.0.2), and in fact, the fix doesn't result in any noticable changes at all. You might consider reverting them, especially because they introduced a new dependency.

            People

            • Assignee:
              Jesse Kuhnert
              Reporter:
              Raul Raja Martinez
            • Votes:
              14 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development