Hmm. Interesting. 1. Are there any javascript errors in the console? 2. Which version of Tapestry are you using? 3. Try adding an ajax eventlink to the page that's not in a PushTarget (normal page render). Is it affected in the same way? 4. Is the markup for the link in 3 any different from the PushTarget link markup? 5. Can you capture the json for the PushTarget update? On 16 Jun 2014 23:22, "Bogdan Ivascu" <ivascu.bogdan...@gmail.com> wrote:
> That did it. Sorry to keep hitting this nail but, I stumbled across another > one. As described above, the push targets will "prepend" a block on every > update. Inside this bock, I have eventLinks that are rendered correctly > after I put in the configuration. These eventLinks are supposed to be ajax. > The eventLink rendered with the last block correctly calls the page via > ajax, however all other eventLinks in blocks already displayed no longer > make ajax calls. It looks as if they get deregistered somehow from the > Tapestry "onClick" handler that makes ajax calls. > > Thanks. > > > On Mon, Jun 16, 2014 at 3:40 AM, Lance Java <lance.j...@googlemail.com> > wrote: > > > See the "configuration" section here > > https://github.com/uklance/tapestry-offline > > On 16 Jun 2014 05:44, "Bogdan Ivascu" <ivascu.bogdan...@gmail.com> > wrote: > > > > > Makes sense, thanks for the reply. > > > > > > Another thing that is odd. I seem to have trouble while rendering > > > eventLinks inside a block that is a delagate of a pushTarget. > > > > > > in tml: > > > <atmos:pushTarget ...> > > > <t:delegate to="tokenPlayHistoryBlock"/> > > > </atmos:pushTarget> > > > > > > <t:block t:id="tokenPlayedByUser"> > > > a bunch of html markup > > > </t:block> > > > > > > in the java class > > > public Block getTokenPlayHistoryBlock(){ > > > switch based on conditions > > > retun blockXXX; > > > } > > > > > > Above works great until I try to add an eventLink in block: > > > > > > <t:block t:id="tokenPlayedByUser"> > > > a bunch of html markup > > > <a t:id="sentTokenPreviewLink">THIS BREAKS IT</a> > > > </t:block> > > > > > > Error: > > > 2014-Jun-16 00:29:09 ioc.internal.RecursiveServiceCreationCheckWrapper > > > org.apache.tapestry5.ioc.internal.OperationException: *Symbol > > > 'tapestry-offline.serverName' is not defined.* > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:45) > > > at $MasterObjectProvider_23570e7547da.provide(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:871) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:57) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:257) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:50) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:289) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:286) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:293) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1488) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1483) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1480) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54) > > > at $OfflineRequestGlobals_23570e7549e2.delegate(Unknown Source) > > > at $OfflineRequestGlobals_23570e7549e2.getContextPath(Unknown > Source) > > > at > > > > > > > > > org.lazan.t5.offline.internal.OfflineRequest.getContextPath(OfflineRequest.java:28) > > > at $Request_23570e75482d.getContextPath(Unknown Source) > > > at $Request_23570e7547ee.getContextPath(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.createComponentEventLink(ComponentEventLinkEncoderImpl.java:161) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor.createComponentEventLink(LinkTransformerInterceptor.java:44) > > > at > > > > $ComponentEventLinkEncoder_23570e754816.createComponentEventLink(Unknown > > > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.LinkSourceImpl.createComponentEventLink(LinkSourceImpl.java:89) > > > at $LinkSource_23570e754873.createComponentEventLink(Unknown > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.createComponentEventLink(ComponentPageElementResourcesImpl.java:105) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.createEventLink(ComponentPageElementImpl.java:1251) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.createEventLink(InternalComponentResourcesImpl.java:206) > > > at > > > > > > > > > org.apache.tapestry5.corelib.components.EventLink.createLink(EventLink.java:58) > > > at > > > > > > > > > org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java:57) > > > at > > > > > > > > > org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.invokeComponent(ComponentPageElementImpl.java:202) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.render(ComponentPageElementImpl.java:209) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.PageRenderQueueImpl$1.renderMarkup(PageRenderQueueImpl.java:142) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.renderMarkup(RenderCommandComponentEventResultProcessor.java:78) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:159) > > > at $PageRenderQueue_23570e7548b7.renderPartial(Unknown Source) > > > at $PageRenderQueue_23570e7548b6.renderPartial(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.PartialMarkupRendererTerminator.renderMarkup(PartialMarkupRendererTerminator.java:45) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$36.renderMarkup(TapestryModule.java:2125) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$35.renderMarkup(TapestryModule.java:2107) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$34.renderMarkup(TapestryModule.java:2091) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$33.renderMarkup(TapestryModule.java:2073) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$32.renderMarkup(TapestryModule.java:2048) > > > at $PartialMarkupRenderer_23570e7549a3.renderMarkup(Unknown Source) > > > at $PartialMarkupRenderer_23570e7549a2.renderMarkup(Unknown Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl.renderPartialPageMarkup(AjaxPartialResponseRendererImpl.java:89) > > > at > > > > $AjaxPartialResponseRenderer_23570e7549a0.renderPartialPageMarkup(Unknown > > > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:58) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:34) > > > at > > > $ComponentEventResultProcessor_23570e7549e4.processResultValue(Unknown > > > Source) > > > at > > > $ComponentEventResultProcessor_23570e75499f.processResultValue(Unknown > > > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler$1.processResultValue(AjaxComponentEventRequestHandler.java:80) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper.handleResult(ComponentResultProcessorWrapper.java:47) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$6.handleResult(ComponentPageElementImpl.java:1084) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:89) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.EventImpl$1.invoke(EventImpl.java:86) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.EventImpl.storeResult(EventImpl.java:84) > > > at > > > > > > > > > com.ar.pages.member.playground.PlaygroundApplication.dispatchComponentEvent(PlaygroundApplication.java) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:927) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1112) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1057) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1054) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) > > > at > > > > > > > > > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1053) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56) > > > at $ComponentEventRequestHandler_23570e7549a1.handle(Unknown > Source) > > > at $ComponentEventRequestHandler_23570e754924.handle(Unknown > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) > > > at $ComponentEventRequestHandler_23570e754926.handle(Unknown > Source) > > > at > > > > > > > > > org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75) > > > at $ComponentEventRequestHandler_23570e754926.handle(Unknown > Source) > > > at > > > > > > > > > org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476) > > > at $ComponentEventRequestHandler_23570e754926.handle(Unknown > Source) > > > at $ComponentEventRequestHandler_23570e75484c.handle(Unknown > Source) > > > at > > > > > > > > > org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) > > > at > > > > > > > > > org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) > > > at > $ComponentRequestHandler_23570e75484e.handleComponentEvent(Unknown > > > Source) > > > at > > > > > > > > > com.ar.model.security.AdminProtectionFilter.handleComponentEvent(AdminProtectionFilter.java:42) > > > at > $ComponentRequestFilter_23570e75484a.handleComponentEvent(Unknown > > > Source) > > > at > $ComponentRequestHandler_23570e75484e.handleComponentEvent(Unknown > > > Source) > > > at > > > > > > > > > com.ar.model.security.PageProtectionFilter.handleComponentEvent(PageProtectionFilter.java:42) > > > at > $ComponentRequestFilter_23570e754849.handleComponentEvent(Unknown > > > Source) > > > at > $ComponentRequestHandler_23570e75484e.handleComponentEvent(Unknown > > > Source) > > > at > > > > > > > > > org.lazan.t5.atmosphere.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22) > > > at > $ComponentRequestHandler_23570e75484e.handleComponentEvent(Unknown > > > Source) > > > at > $ComponentRequestHandler_23570e754814.handleComponentEvent(Unknown > > > Source) > > > at > > > > > > > > > org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.invoke(OfflineComponentRendererImpl.java:112) > > > at > > > > > > > > > org.lazan.t5.offline.services.internal.OfflineComponentRendererImpl$1.invoke(OfflineComponentRendererImpl.java:100) > > > at > > > > > > > > > org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl$1.call(ParallelExecutorImpl.java:58) > > > at java.util.concurrent.FutureTask.run(Unknown Source) > > > at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown > Source) > > > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > Source) > > > at java.lang.Thread.run(Unknown Source) > > > > > > What is it with this "Symbol 'tapestry-offline.serverName'"? Not event > > > sure it is related to the atmosphere library, but seems to work in all > > > other places, except when I put it into a pushTarget. I event tried to > > > create the link in a separate method and return the URL. Same thing, as > > > soon as I go componenResources.createEventLink, the error pops up. > > > > > > Thanks very much, > > > Bogdan. > > > > > > > > > > > > On Sun, Jun 15, 2014 at 3:30 PM, Lance Java <lance.j...@googlemail.com > > > > > wrote: > > > > > > > The disconnect event is fired by atmosphere under the hood > > > > (AtmosphereResourceEventListener.onDisconnect). Further reading here: > > > > > > > > https://github.com/Atmosphere/atmosphere/wiki/onDisconnect-tricks > > > > > > > > > > > > > > > > > > http://atmosphere.github.io/atmosphere/apidocs/org/atmosphere/cpr/AtmosphereResourceEventListener.html > > > > > > > > If you'll notice in the chat demo, I use a HttpSessionListener to > > cleanup > > > > any chat users that might not have disconnected > > > > > > > > > > > > > > > > > > https://github.com/uklance/tapestry-atmosphere/blob/master/tapestry-atmosphere-demo/src/main/webapp/WEB-INF/web.xml > > > > > > > > > > > > > > > > > > https://github.com/uklance/tapestry-atmosphere/blob/master/tapestry-atmosphere-demo/src/main/java/org/lazan/t5/atmosphere/demo/services/ChatHttpSessionListener.java > > > > On 15 Jun 2014 02:41, "Bogdan Ivascu" <ivascu.bogdan...@gmail.com> > > > wrote: > > > > > > > > > Sorry, not that I read it, I should have been more specific. I do > see > > > the > > > > > contribution of the ChatTopicListener in AppModule and the > > "onConnect" > > > > > method gets called as expected when any push target creates a new > > > > > AtmosphereResource. The one that I don't see called is the > > > "onDisconnect" > > > > > method. > > > > > > > > > > > > > > > On Sat, Jun 14, 2014 at 8:42 PM, Bogdan Ivascu < > > > > ivascu.bogdan...@gmail.com > > > > > > > > > > > wrote: > > > > > > > > > > > Hi Lance, > > > > > > What is the way to listen for someone connecting and > > disconnecting > > > > from > > > > > > a topic? I see that you have "TopicListenerImpl" and > > > > > > "ChatTopicListenerImpl" having methods that listen for this type > of > > > > > thing. > > > > > > I don't see how they are used though. > > > > > > > > > > > > Thanks, > > > > > > Bogdan. > > > > > > > > > > > > > > > > > > On Wed, May 21, 2014 at 3:33 AM, Lance Java < > > > lance.j...@googlemail.com > > > > > > > > > > > wrote: > > > > > > > > > > > >> I've implemented this feature in tapestry-cometd but it's not > been > > > > > >> implemented in tapestry-atmosphere yet. I think it's only a > couple > > > of > > > > > >> lines > > > > > >> of javascript. > > > > > >> > > > > > >> I have just updated the outstanding issue with a possible > solution > > > > here: > > > > > >> https://github.com/uklance/tapestry-atmosphere/issues/5 > > > > > >> > > > > > >> Pull requests welcomed!! > > > > > >> On 21 May 2014 04:21, "Bogdan Ivascu" < > ivascu.bogdan...@gmail.com > > > > > > > > wrote: > > > > > >> > > > > > >> > I ended up using your atmosphere implementation and it works > > like > > > a > > > > > >> charm, > > > > > >> > so many thanks for that. I have an additional questions > though. > > > When > > > > > >> > returning the block to the client, basically your ChatDemo > class > > > > > >> > ( > > > > > >> > > > > > > >> > > > > > > >> > > > > > > > > > > > > > > > https://github.com/uklance/tapestry-atmosphere/blob/master/tapestry-atmosphere-demo/src/main/java/org/lazan/t5/atmosphere/demo/pages/ChatDemo.java#L65 > > > > > >> > ) > > > > > >> > ->onChatMessage method, I want to be able to execute some > > client > > > > > >> > javascript > > > > > >> > that will parse a Long number and make it into a date using > > > > momentjs. > > > > > >> Where > > > > > >> > can I patch in this piece of code? I tried changing the return > > > type > > > > of > > > > > >> the > > > > > >> > method to void and using AjaxRespRenderer to display the block > > and > > > > > then > > > > > >> > call the javascript without much success. What would be a good > > > > > solution > > > > > >> > here, listen on the client side for some event to be triggered > > or > > > > > >> somehow > > > > > >> > make an ajax addScript() call from the server. > > > > > >> > > > > > > >> > Thanks, > > > > > >> > Bogdan. > > > > > >> > > > > > > >> > > > > > > >> > On Tue, May 13, 2014 at 12:15 PM, Bogdan Ivascu > > > > > >> > <ivascu.bogdan...@gmail.com>wrote: > > > > > >> > > > > > > >> > > Hi Lance, > > > > > >> > > I did see numerous discussions around your implementation. > > My > > > > goal > > > > > >> here > > > > > >> > > is to try and get a better understanding of where and how > this > > > > > >> framework > > > > > >> > > can be extended. I am however pressed for time and if I > cannot > > > get > > > > > it > > > > > >> to > > > > > >> > > work, I will most likely end up using your implementation. > > > > > >> > > > > > > > >> > > Thanks, > > > > > >> > > Bogdan. > > > > > >> > > > > > > > >> > > > > > > > >> > > On Tue, May 13, 2014 at 3:34 AM, Lance Java < > > > > > >> lance.j...@googlemail.com > > > > > >> > >wrote: > > > > > >> > > > > > > > >> > >> Take a look at tapestry-atmosphere [1] and tapestry-cometd > > [2] > > > > > >> > >> > > > > > >> > >> [1] https://github.com/uklance/tapestry-atmosphere > > > > > >> > >> [2] https://github.com/uklance/tapestry-cometd > > > > > >> > >> On 13 May 2014 02:10, "Bogdan Ivascu" < > > > > ivascu.bogdan...@gmail.com> > > > > > >> > wrote: > > > > > >> > >> > > > > > >> > >> > Hi everyone, > > > > > >> > >> > I want to add webSocket support for my tapestry project > > and > > > > > need > > > > > >> a > > > > > >> > few > > > > > >> > >> > pointers. What I have is a dead simple Servlet, > > implementing > > > > the > > > > > >> java > > > > > >> > >> > WebSocket api. I would like to bring this servlet into my > > > > > tapestry > > > > > >> > >> project > > > > > >> > >> > and have it managed by tapestry itself. To be more > clear, I > > > > don't > > > > > >> want > > > > > >> > >> to > > > > > >> > >> > use the ignore path functionality to expose it, but > rather > > > have > > > > > >> > >> tapestry's > > > > > >> > >> > filter control the access to this servlet. > > > > > >> > >> > > > > > > >> > >> > The biggest problem that I have right now is that I don't > > > have > > > > a > > > > > >> clear > > > > > >> > >> > understanding of what I need to do to make this happen. > > Will > > > > this > > > > > >> > >> servlet > > > > > >> > >> > be a service or a page with no tml, where would it sit, > how > > > do > > > > I > > > > > >> > >> configure > > > > > >> > >> > tapestry so that it knows to create a new instance for > each > > > > > >> request. > > > > > >> > >> > > > > > > >> > >> > A nudge of where I could document myself regarding this > > type > > > of > > > > > >> > >> integration > > > > > >> > >> > would be most welcome. > > > > > >> > >> > > > > > > >> > >> > Thank you, > > > > > >> > >> > Bogdan. > > > > > >> > >> > > > > > > >> > >> > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >