Howard, Thank you very much. This is not a show-stopper for me at the moment since I can get what I need through ApplicationStateManager, but I'll watch for a patch and attempt to reproduce the exception.
Shawn Quoting Howard Lewis Ship <[EMAIL PROTECTED]>: > http://issues.apache.org/jira/browse/TAPESTRY-696 > > > On 10/7/05, Howard Lewis Ship <[EMAIL PROTECTED]> wrote: > > It's looking to me like there's a thread synchronization problem > going > > on. I'll be looking into it. Add a bug, please. > > > > On 10/5/05, Bryan Dotzour <[EMAIL PROTECTED]> wrote: > > > We're currently trying to get a handle on the exact same problem, > but we > > > experience under different circumstances. > > > > > > All of our pages implement a VisitHolder interface, which injects > the > > > Visit. This concept was described on Howard's blog > > > > (http://howardlewisship.com/blog/2005/06/annotations-bytecode-generation > > > -mixins.html). Currently if two requests come in for the same > page at > > > the same time, one of the requests will receive this same stack > trace. > > > > > > I agree with your assessment that this looks like a bug, but > I'll > > > investigate you're workaround and see if we can make that work as > a > > > stop-gap. > > > > > > -----Original Message----- > > > From: Shawn Church [mailto:[EMAIL PROTECTED] > > > Sent: Tuesday, October 04, 2005 10:12 AM > > > To: tapestry-user@jakarta.apache.org > > > Subject: Re: InjectState exception within activateExternalPage > > > > > > The only solution (work-around) I could come up with for this > problem is > > > to replace this in my Border component: > > > > > > @InjectState("visit") > > > public abstract Visit getVisitObject(); > > > > > > with this: > > > > > > @InjectObject("infrastructure:applicationStateManager") > > > public abstract ApplicationStateManager > > > getApplicationStateManager(); > > > > > > public Visit getVisitObject() > > > { > > > return (Visit) getApplicationStateManager().get("visit"); > > > } > > > > > > By the way, I'm using Tapestry 4 beta-9. I assume this is a bug, > but > > > the work-around seems to be working for now. > > > > > > Shawn > > > > > > > > > Quoting Shawn Church <[EMAIL PROTECTED]>: > > > > > > > I'm converting one of my Tapestry 3 apps to version 4. Since > the > > > > AbstractPage implementation of getVisit() is deprecated, I > have > > > > refactored by pages to inject the visit as > > > > > > > > @InjectState("visit") > > > > public abstract Visit getVisitObject(); > > > > > > > > I'm also doing this in my Border object. This has all been > working > > > > fine, but I'm now encountering an exception when requesting a > page > > > > using > > > > the external service (within activateExternalPage). > > > > > > > > The process here is basically handling a "My Account" feature: > > > > > > > > 1. An outside application makes a request to a Login page (a > page > > > > which > > > > implements IExternalPage within the failing app). > > > > > > > > 2. Within activateExternalPage, the app determines if the user > is > > > > logged > > > > in (by observing the Visit object). > > > > > > > > 3. If logged in, activate the desired page (in this case, a > > > > ViewProfile > > > > page). > > > > > > > > I'm getting an ApplicationRuntimeException on this line: > > > > > > > > ViewProfile viewProfile = ( ViewProfile ) > > > > cycle.getPage("ViewProfile"); > > > > > > > > stating: > > > > > > > > Error: An error occured processing annotation > > > > @org.apache.tapestry.annotations.InjectState(value=visit) of > public > > > > abstract com.mcelroy.auth.Visit > > > > com.mcelroy.auth.component.Border.getVisitObject(): Property > > > > visitObject > > > > has already been accounted for by the element at Annotation > > > > @org.apache.tapestry.annotations.InjectState(value=visit) of > public > > > > abstract com.mcelroy.auth.Visit > > > > com.mcelroy.auth.component.Border.getVisitObject(). > > > > > > > > Am I doing something wrong here? I can transition from > page-to-page > > > > without any trouble as long as I'm not entering the app through > the > > > > external service. > > > > > > > > In case it's useful, here's the full stack trace: > > > > > > > > * > > > > > > > > org.apache.tapestry.spec.ComponentSpecification.claimProperty(ComponentS > > > pecification.java:674) > > > > * > > > > > > > > org.apache.tapestry.spec.ComponentSpecification.addInjectSpecification(C > > > omponentSpecification.java:645) > > > > * > > > > > > > > org.apache.tapestry.annotations.InjectStateAnnotationWorker.performEnhan > > > cement(InjectStateAnnotationWorker.java:49) > > > > * > > > > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho > > > dEnhancement(AnnotationEnhancementWorker.java:125) > > > > * > > > > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performMetho > > > dEnhancement(AnnotationEnhancementWorker.java:108) > > > > * > > > > > > > > org.apache.tapestry.annotations.AnnotationEnhancementWorker.performEnhan > > > cement(AnnotationEnhancementWorker.java:68) > > > > * > > > > > > > > $EnhancementWorker_106b7b9f8bb.performEnhancement($EnhancementWorker_106 > > > b7b9f8bb.java) > > > > * > > > > > > > > $EnhancementWorker_106b7b9f8bd.performEnhancement($EnhancementWorker_106 > > > b7b9f8bd.java) > > > > * > > > > > > > > $EnhancementWorker_106b7b9f89d.performEnhancement($EnhancementWorker_106 > > > b7b9f89d.java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getCom > > > ponentConstructor(ComponentConstructorFactoryImpl.java:79) > > > > * > > > > > > > > $ComponentConstructorFactory_106b7b9f888.getComponentConstructor($Compon > > > entConstructorFactory_106b7b9f888.java) > > > > * > > > > > > > > org.apache.tapestry.pageload.PageLoader.instantiateComponent(PageLoader. > > > java:565) > > > > * > > > > > > > > org.apache.tapestry.pageload.PageLoader.createImplicitComponent(PageLoad > > > er.java:515) > > > > * > > > > > > > > $IPageLoader_106b7b9f882.createImplicitComponent($IPageLoader_106b7b9f88 > > > 2.java) > > > > * > > > > > > > > $IPageLoader_106b7b9f883.createImplicitComponent($IPageLoader_106b7b9f88 > > > 3.java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.createImp > > > licitComponent(ComponentTemplateLoaderLogic.java:218) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(C > > > omponentTemplateLoaderLogic.java:172) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.process(C > > > omponentTemplateLoaderLogic.java:111) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentTemplateLoaderLogic.loadTempl > > > ate(ComponentTemplateLoaderLogic.java:88) > > > > * > > > > > > > > org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTempla > > > te(ComponentTemplateLoaderImpl.java:60) > > > > * > > > > > > > > $ComponentTemplateLoader_106b7b9f88c.loadTemplate($ComponentTemplateLoad > > > er_106b7b9f88c.java) > > > > * > > > > > > > > org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent(PageLoa > > > der.java:671) > > > > * > > > > > org.apache.tapestry.BaseComponent.readTemplate(BaseComponent.java:77) > > > > * > > > > > org.apache.tapestry.BaseComponent.finishLoad(BaseComponent.java:107) > > > > * $ViewProfile_41.finishLoad($ViewProfile_41.java) > > > > * > > > > > > > > org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.ja > > > va:473) > > > > * > > > > > org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:642) > > > > * > > > > > $IPageLoader_106b7b9f882.loadPage($IPageLoader_106b7b9f882.java) > > > > * > > > > > $IPageLoader_106b7b9f883.loadPage($IPageLoader_106b7b9f883.java) > > > > * > > > > > org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:118) > > > > * > > > > > $IPageSource_106b7b9f7ed.getPage($IPageSource_106b7b9f7ed.java) > > > > * > > > > > > > > org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:265) > > > > * > > > > > org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:248) > > > > * > > > > > com.mcelroy.auth.pages.Login.activateExternalPage(Login.java:216) > > > > * > > > > > > > > org.apache.tapestry.engine.ExternalService.service(ExternalService.java: > > > 160) > > > > * > > > > > $IEngineService_106b7b9f87a.service($IEngineService_106b7b9f87a.java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(Engine > > > ServiceOuterProxy.java:65) > > > > * > > > > > > > > org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:24 > > > 8) > > > > * > > > > > > > > org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeE > > > ngineTerminator.java:60) > > > > * > > > > > > > > $WebRequestServicer_106b7b9f84d.service($WebRequestServicer_106b7b9f84d. > > > java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCa > > > chingFilter.java:48) > > > > * > > > > > > > > $WebRequestServicerFilter_106b7b9f84f.service($WebRequestServicerFilter_ > > > 106b7b9f84f.java) > > > > * > > > > > > > > $WebRequestServicer_106b7b9f851.service($WebRequestServicer_106b7b9f851. > > > java) > > > > * > > > > > > > > $WebRequestServicer_106b7b9f849.service($WebRequestServicer_106b7b9f849. > > > java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.servi > > > ce(WebRequestServicerPipelineBridge.java:56) > > > > * > > > > > > > > $ServletRequestServicer_106b7b9f82d.service($ServletRequestServicer_106b > > > 7b9f82d.java) > > > > * > > > > > > > > org.apache.tapestry.request.DecodedRequestInjector.service(DecodedReques > > > tInjector.java:55) > > > > * > > > > > > > > $ServletRequestServicerFilter_106b7b9f829.service($ServletRequestService > > > rFilter_106b7b9f829.java) > > > > * > > > > > > > > $ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b > > > 7b9f82f.java) > > > > * > > > > > > > > org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDe > > > coderFilter.java:52) > > > > * > > > > > > > > $ServletRequestServicerFilter_106b7b9f827.service($ServletRequestService > > > rFilter_106b7b9f827.java) > > > > * > > > > > > > > $ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b > > > 7b9f82f.java) > > > > * > > > > > > > > org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequ > > > estEncoding.java:53) > > > > * > > > > > > > > $ServletRequestServicerFilter_106b7b9f82b.service($ServletRequestService > > > rFilter_106b7b9f82b.java) > > > > * > > > > > > > > $ServletRequestServicer_106b7b9f82f.service($ServletRequestServicer_106b > > > 7b9f82f.java) > > > > * > > > > > > > > $ServletRequestServicer_106b7b9f821.service($ServletRequestServicer_106b > > > 7b9f821.java) > > > > * > > > > > > > > org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java > > > :141) > > > > * > > > > > > > > org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:97) > > > > * > javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > > > > * > javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > > > > * > > > > > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427) > > > > * > > > > > > > > org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationH > > > andler.java:475) > > > > * > > > > > > > > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567) > > > > * > org.mortbay.http.HttpContext.handle(HttpContext.java:1565) > > > > * > > > > > > > > org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationCon > > > text.java:635) > > > > * > org.mortbay.http.HttpContext.handle(HttpContext.java:1517) > > > > * org.mortbay.http.HttpServer.service(HttpServer.java:954) > > > > * > > > > > org.mortbay.http.HttpConnection.service(HttpConnection.java:814) > > > > * > > > > > org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981) > > > > * > > > > > org.mortbay.http.HttpConnection.handle(HttpConnection.java:831) > > > > * > > > > > > > > org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244 > > > ) > > > > * > > > > > org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) > > > > * > > > > > org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) > > > > > > > > > > > > Thanks, > > > > Shawn > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: > [EMAIL PROTECTED] > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > -- > > Howard M. Lewis Ship > > Independent J2EE / Open-Source Java Consultant > > Creator, Jakarta Tapestry > > Creator, Jakarta HiveMind > > > > Professional Tapestry training, mentoring, support > > and project work. http://howardlewisship.com > > > > > -- > Howard M. Lewis Ship > Independent J2EE / Open-Source Java Consultant > Creator, Jakarta Tapestry > Creator, Jakarta HiveMind > > Professional Tapestry training, mentoring, support > and project work. http://howardlewisship.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]