Unfortunately, the bug in tapestry-cometd means that context.getCount() will always be 0. I will need to fix this bug.
This is executing your redirect logic in the push event which is then failing. I'll try to get you a fix over the weekend. I've detailed the bug fix quite thoroughly in the issue. On 23 Apr 2013 10:36, "Tom Nys" <runesmac...@hotmail.com> wrote: > the activate is somthing like: > > Object onActivate(context) > { > if(context.count()>0) > do somthing > else > redirect to other page > } > > my onchat method is unchanged from your demo project. > > > I'm now trying to add an eventlink to the list of users to make 1v1 chat > possible by changing the topic. > > Try adding an eventlink in the loop of users in your demo project. > > <t:block id="chatUsersBlock"> > <ul> > <t:loop source="chatUsers" value="currentUser"> > <li><t:eventlink event="user" context="${currentUser}">${** > currentUser}</eventlink></li> > </t:loop> > </ul> > </t:block> > > and in java > > void onUser(String user){ > system.out.println(user) > } > > this also gives the encodeURL error. (is this the same error as what you > said?) > > any other idea on how to do this? > > -----Oorspronkelijk bericht----- From: Lance Java > Sent: Tuesday, April 23, 2013 10:24 AM > To: Tapestry users > Subject: Re: Live support solution > > Do you do any redirecting in your onActivate? (eg do you return another > page under some conditions). > > Can you show me the (simplified) code that's firing for your push? > > I think I might have spotted a bug, tapestry-cometd will always pass > EMPTY_EVENT_CONTEXT as the page activation context for push events. Perhaps > this is causing your issue? > > https://github.com/uklance/**tapestry-cometd/blob/master/** > src/main/java/org/lazan/t5/**cometd/services/internal/** > PushManagerImpl.java#L60<https://github.com/uklance/tapestry-cometd/blob/master/src/main/java/org/lazan/t5/cometd/services/internal/PushManagerImpl.java#L60> > On 23 Apr 2013 08:15, "Tom Nys" <runesmac...@hotmail.com> wrote: > > I found that the problem accurs in the onActivate() function. >> >> Our pages give information between eachotter trought the >> activationcontext. >> Since it's a fake request it doesn't have this context, and or pages are >> made that they redirect when the context is empty. >> removing this check is not realy an option. I guess that putting the chat >> in the sidebar is just impossible becous of this? >> >> -----Oorspronkelijk bericht----- From: Lance Java >> Sent: Monday, April 22, 2013 6:14 PM >> To: Tapestry users >> Subject: Re: Live support solution >> >> Also, do you have a security framework that might be getting in the way? >> Perhaps this framework is returning a login page Link because it can't >> find >> the session on the Fake request. >> On 22 Apr 2013 16:56, "Lance Java" <lance.j...@googlemail.com> wrote: >> >> I get the feeling that your push action is returning a Link (or a page or >> >>> something) when it should return a Block. I'm not sure why else tapestry >>> would try and call response.encodeRedirectURL(...****) >>> >>> Take another look at the demo, there are two topics defined in >>> ChatService: >>> >>> /chatservice/users - the java.util.Collection of users is broadcast on >>> this topic whenever >>> a user enters or leaves the chatroom >>> >>> /chatservice/chat - All chat messages are broadcast to this topic. >>> >>> Then there is a page with two PushTargets (one for each topic) >>> >>> https://github.com/uklance/****tapestry-cometd-demo/blob/**<https://github.com/uklance/**tapestry-cometd-demo/blob/**> >>> master/src/main/resources/org/****lazan/t5/cometddemo/pages/**** >>> Chat.tml<https://github.com/**uklance/tapestry-cometd-demo/** >>> blob/master/src/main/**resources/org/lazan/t5/** >>> cometddemo/pages/Chat.tml<https://github.com/uklance/tapestry-cometd-demo/blob/master/src/main/resources/org/lazan/t5/cometddemo/pages/Chat.tml> >>> > >>> >>> The main guts of the demo is in these two classes: >>> >>> https://github.com/uklance/****tapestry-cometd-demo/blob/**<https://github.com/uklance/**tapestry-cometd-demo/blob/**> >>> master/src/main/java/org/****lazan/t5/cometddemo/services/**** >>> internal/ChatServiceImpl.java<**https://github.com/uklance/** >>> tapestry-cometd-demo/blob/**master/src/main/java/org/** >>> lazan/t5/cometddemo/services/**internal/ChatServiceImpl.java<https://github.com/uklance/tapestry-cometd-demo/blob/master/src/main/java/org/lazan/t5/cometddemo/services/internal/ChatServiceImpl.java> >>> > >>> >>> >>> https://github.com/uklance/****tapestry-cometd-demo/blob/**<https://github.com/uklance/**tapestry-cometd-demo/blob/**> >>> master/src/main/java/org/****lazan/t5/cometddemo/services/*** >>> *internal/** >>> ChatSubscriptionListener.java<**https://github.com/uklance/** >>> tapestry-cometd-demo/blob/**master/src/main/java/org/** >>> lazan/t5/cometddemo/services/**internal/**ChatSubscriptionListener.java<https://github.com/uklance/tapestry-cometd-demo/blob/master/src/main/java/org/lazan/t5/cometddemo/services/internal/ChatSubscriptionListener.java> >>> > >>> On 22 Apr 2013 15:58, "Tom Nys" <runesmac...@hotmail.com> wrote: >>> >>> Well i'm trying to put the chatmessages into a div thats in my sidebar >>> >>>> (admin side of my application). >>>> >>>> I have the error on all the pages that have an OnPassivate() method. >>>> >>>> I tryed the demo application but i didn't understand everything that's >>>> happening so i'm tryng to start from scratch (looking at the wiki pages >>>> you >>>> posted) >>>> I also think one of the problems is that we use an ssl connection (no >>>> real proof here) and the chat also needs to be encrypted. i don't know >>>> if >>>> this chat is. >>>> >>>> What i need the application to eventually do: >>>> >>>> a client can log onto the site and open a chat with an admin. >>>> the admin gets a notice and clicks on the name of that client to open >>>> the >>>> chat with him. >>>> they start chatting and the admin eventually closes that chat. he can >>>> then choos anothcer client that opened the chat. >>>> >>>> The side of the admin needs to be in the sidebar component wich appears >>>> on every page of our application so he can go to the details of that >>>> user >>>> and don't lose the chat. >>>> >>>> The client side is just a page for the moment (so no specials there, >>>> just >>>> a simple chat reciever-sender like on your wiki). >>>> >>>> Greets >>>> Runesmacher >>>> -----Oorspronkelijk bericht----- From: Lance Java >>>> Sent: Monday, April 22, 2013 4:17 PM >>>> To: Tapestry users >>>> Subject: Re: Live support solution >>>> >>>> Hi, sorry for the late response, I've been on holiday. I'm the author >>>> of >>>> tapestry-cometd. >>>> >>>> Tapestry-cometd has to fool tapestry into thinking there is a "real" >>>> request /response when a push is initiated. It does this via a >>>> FakeHttpServletRequest (and Response). Note that not all methods are >>>> implemented in the fake objects (eg encodeRedirectURL) >>>> >>>> It looks like your push action is trying to do a redirect. Can you tell >>>> me >>>> a bit more about what you're trying to do in your push? >>>> >>>> The main use case for tapestry-cometd is to render a template and return >>>> a >>>> Block which is used to append, prepend or replace the content in a >>>> PushTarget. >>>> >>>> I have not done a release yet but if you take a look at trunk for >>>> tapestry-cometd and tapestry-cometd-demo, you will see a much better >>>> chat >>>> example. >>>> >>>> Cheers, >>>> Lance. >>>> On 22 Apr 2013 09:13, "Tom Nys" <runesmac...@hotmail.com> wrote: >>>> >>>> I've looked into tapestry-cometd again. hoping to find a solution. >>>> >>>> >>>>> but i get the folowing error when trying to implement it in my sidebar >>>>> component. >>>>> >>>>> java.lang.********UnsupportedOperationException >>>>> encodeRedirectURL >>>>> >>>>> Filter stack frames Stack trace >>>>> org.lazan.t5.cometd.services.********internal.** >>>>> FakeHttpServletResponse.********encodeRedirectURL(** >>>>> FakeHttpServletResponse.java:********109) >>>>> org.apache.tapestry5.internal.** >>>>> ******services.ResponseImpl.** >>>>> encodeRedirectURL(********ResponseImpl.java:67) >>>>> org.apache.tapestry5.internal.********services.LinkImpl.** >>>>> toRedirectURI(LinkImpl.java:********138) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxLinkComponentEventResultPr********ocessor.**** >>>>> processResultValue(**** >>>>> AjaxLinkComponentEventResultPr********ocessor.java:41) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxLinkComponentEventResultPr********ocessor.**** >>>>> processResultValue(**** >>>>> AjaxLinkComponentEventResultPr********ocessor.java:27) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxPageNameComponentEventResu********ltProcessor.****** >>>>> processResultValue(** >>>>> AjaxPageNameComponentEventResu********ltProcessor.java:55) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxPageNameComponentEventResu********ltProcessor.****** >>>>> processResultValue(** >>>>> AjaxPageNameComponentEventResu********ltProcessor.java:29) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxComponentInstanceEventResu********ltProcessor.****** >>>>> processResultValue(** >>>>> AjaxComponentInstanceEventResu********ltProcessor.java:56) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxComponentInstanceEventResu********ltProcessor.****** >>>>> processResultValue(** >>>>> AjaxComponentInstanceEventResu********ltProcessor.java:30) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxComponentEventRequestHandl********er$1.processResultValue(**** >>>>> AjaxComponentEventRequestHandl********er.java:80) >>>>> org.apache.tapestry5.internal.********services.** >>>>> ComponentResultProcessorWrappe********r.handleResult(** >>>>> ComponentResultProcessorWrappe********r.java:47) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl$6.********handleResult(**** >>>>> ComponentPageElementImpl.java: >>>>> **1084) >>>>> org.apache.tapestry5.internal.****** >>>>> **services.EventImpl$1.invoke(******** >>>>> EventImpl.java:89) >>>>> org.apache.tapestry5.internal.****** >>>>> **services.EventImpl$1.invoke(******** >>>>> EventImpl.java:86) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementResourcesI********mpl.invoke(** >>>>> ComponentPageElementResourcesI********mpl.java:146) >>>>> org.apache.tapestry5.internal.********services.EventImpl.** >>>>> storeResult(EventImpl.java:84) >>>>> be.mysite.pages.Dashboard.********dispatchComponentEvent(** >>>>> Dashboard.java) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl.********dispatchEvent(**** >>>>> ComponentPageElementImpl.java:******* >>>>> *927) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl.********processEventTriggering(** >>>>> ComponentPageElementImpl.java:********1112) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl.********access$3100(**** >>>>> ComponentPageElementImpl.java:******** >>>>> 61) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl$5.********invoke(****** >>>>> ComponentPageElementImpl.java: >>>>> **** >>>>> 1057) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl$5.********invoke(****** >>>>> ComponentPageElementImpl.java: >>>>> **** >>>>> 1054) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementResourcesI********mpl.invoke(** >>>>> ComponentPageElementResourcesI********mpl.java:146) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> ComponentPageElementImpl.********triggerContextEvent(** >>>>> ComponentPageElementImpl.java:********1053) >>>>> org.apache.tapestry5.internal.********structure.** >>>>> InternalComponentResourcesImpl********.triggerContextEvent(** >>>>> InternalComponentResourcesImpl********.java:302) >>>>> org.apache.tapestry5.internal.****** >>>>> **services.PageActivatorImpl.******** >>>>> activatePage(********PageActivatorImpl.java:34) >>>>> org.apache.tapestry5.internal.********services.** >>>>> AjaxComponentEventRequestHandl********er.handle(**** >>>>> AjaxComponentEventRequestHandl >>>>> **er.java:89) >>>>> org.apache.tapestry5.internal.********services.ajax.** >>>>> AjaxFormUpdateFilter.handle(********AjaxFormUpdateFilter.java:****56) >>>>> org.apache.tapestry5.internal.****** >>>>> **services.AjaxFilter.handle(******** >>>>> AjaxFilter.java:42) >>>>> org.apache.tapestry5.upload.********internal.services.** >>>>> UploadExceptionFilter.handle(********UploadExceptionFilter.** >>>>> java:****75) >>>>> org.apache.tapestry5.services.**** >>>>> ****TapestryModule$41.handle(****** >>>>> TapestryModule.java:2476) >>>>> org.apache.tapestry5.internal.********services.** >>>>> ComponentRequestHandlerTermina********tor.**handleComponentEvent(**** >>>>> ComponentRequestHandlerTermina********tor.java:43) >>>>> org.apache.tapestry5.services.**** >>>>> ****InitializeActivePageName.****** >>>>> handleComponentEvent(********InitializeActivePageName.java:********39) >>>>> org.lazan.t5.cometd.services.********internal.** >>>>> ComponentJSONRendererImpl$1.********invoke(****** >>>>> ComponentJSONRendererImpl.** >>>>> java:83) >>>>> org.apache.tapestry5.ioc.********internal.services.** >>>>> ParallelExecutorImpl$1.call(********ParallelExecutorImpl.java:****58) >>>>> java.util.concurrent.********FutureTask$Sync.innerRun(** >>>>> FutureTask.java:334) >>>>> java.util.concurrent.********FutureTask.run(FutureTask.**** >>>>> java:166) >>>>> java.util.concurrent.********ThreadPoolExecutor.runWorker(* >>>>> **** >>>>> *** >>>>> ThreadPoolExecutor.java:1145) >>>>> java.util.concurrent.********ThreadPoolExecutor$Worker.run( >>>>> **** >>>>> **** >>>>> ThreadPoolExecutor.java:615) >>>>> java.lang.Thread.run(Thread.********java:722) >>>>> >>>>> Tapestry Framework >>>>> >>>>> Any ideas on how to fix this? >>>>> I think it is becous of the onPassivate inside the page i want to embed >>>>> it >>>>> in. >>>>> >>>>> Greets >>>>> >>>>> -----Oorspronkelijk bericht----- From: Taha Siddiqi >>>>> Sent: Thursday, April 4, 2013 4:37 PM >>>>> To: Tapestry users >>>>> Subject: Re: Live support solution >>>>> >>>>> I recently worked on a tapestry + cometd project. I didn't use the >>>>> module. >>>>> Just created a simple integration and then used standard cometd library >>>>> documentation to create a full chat app. It was easy and I am more than >>>>> satisfied with the result. >>>>> >>>>> For integration you can have a look at >>>>> >>>>> http://tawus.wordpress.com/********2011/06/13/tapestry-magic-** >>>>> 15-******<http://tawus.wordpress.com/******2011/06/13/tapestry-magic-15-******> >>>>> <http://tawus.**wordpress.com/****2011/06/13/**tapestry-magic-15-****<http://tawus.wordpress.com/****2011/06/13/tapestry-magic-15-****> >>>>> > >>>>> <http://tawus.wordpress.**com/****2011/06/13/tapestry-**magic-**15-**< >>>>> http://tawus.wordpress.**com/**2011/06/13/tapestry-**magic-15-**<http://tawus.wordpress.com/**2011/06/13/tapestry-magic-15-**> >>>>> > >>>>> > >>>>> integration-with-cometd/<http:******//tawus.wordpress.com/** >>>>> 2011/**06/** <http://tawus.wordpress.com/2011/**06/**><http://tawus.** >>>>> wordpress.com/2011/06/** <http://tawus.wordpress.com/2011/06/**>> >>>>> 13/tapestry-magic-15-******integration-with-cometd/<http:**** >>>>> //tawus.wordpress.com/2011/06/****13/tapestry-magic-15-**<http://tawus.wordpress.com/2011/06/**13/tapestry-magic-15-**> >>>>> integration-with-cometd/<http:**//tawus.wordpress.com/2011/06/** >>>>> 13/tapestry-magic-15-**integration-with-cometd/<http://tawus.wordpress.com/2011/06/13/tapestry-magic-15-integration-with-cometd/> >>>>> > >>>>> > >>>>> > >>>>> >>>>> regards >>>>> Taha >>>>> >>>>> On Apr 4, 2013, at 6:08 PM, Tom Nys wrote: >>>>> >>>>> First of all, i need 1 on 1 chat between a client and a person from my >>>>> >>>>> helpdesk. >>>>> >>>>>> >>>>>> A lot of our system works on session variables and giving info trough >>>>>> via >>>>>> the url. >>>>>> I found out that when tapestry-cometD is working in my sidebar (a >>>>>> component) it triggers the OnPassivate function of the page it is on. >>>>>> >>>>>> I've had an error on encodeUrl when trying to use eventlinks in the >>>>>> sidebar. (fixed this by bypassing the encodeUrl function in the >>>>>> fakehtmlrequest of cometD) but this isn't a nice solution since it >>>>>> might >>>>>> have broken some other stuff. >>>>>> >>>>>> >>>>>> -----Oorspronkelijk bericht----- From: Thiago H de Paula Figueiredo >>>>>> Sent: Thursday, April 4, 2013 2:17 PM >>>>>> To: Tapestry users >>>>>> Subject: Re: Live support solution >>>>>> >>>>>> On Thu, 04 Apr 2013 05:20:52 -0300, Tom Nys <runesmac...@hotmail.com> >>>>>> wrote: >>>>>> >>>>>> Hi there, >>>>>> >>>>>> >>>>>> >>>>>>> Hi! >>>>>>> >>>>>> >>>>>> I’m developing a website in tapestry and trying to implement live >>>>>> >>>>>> support (1 on 1). >>>>>> >>>>>>> >>>>>>> I tryed implementing tapestry-cometD but it doesn’t support some of >>>>>>> the >>>>>>> functions already implemented on my pages. >>>>>>> >>>>>>> >>>>>>> Your question is too vague for us to give a good answer. What >>>>>>> >>>>>> features >>>>>> do >>>>>> you need? Which one of them are not implemented by tapestry-cometd? >>>>>> >>>>>> -- >>>>>> Thiago H. de Paula Figueiredo >>>>>> >>>>>> ------------------------------********------------------------** >>>>>> --**--** >>>>>> --**--------- >>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.******a**pache.org >>>>>> < >>>>>> http://apache.org**> >>>>>> <users-unsubscribe@**tapestry.****apache.org<http://tapestry.** >>>>>> apache.org <http://tapestry.apache.org>> >>>>>> <users-unsubscribe@**tapestry.**apache.org<http://tapestry.apache.org> >>>>>> <users-unsubscribe@**tapestry.apache.org<users-unsubscr...@tapestry.apache.org> >>>>>> > >>>>>> > >>>>>> > >>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>>> >>>>>> >>>>>> ------------------------------********------------------------** >>>>>> --**--** >>>>>> --**--------- >>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.******a**pache.org >>>>>> < >>>>>> http://apache.org**> >>>>>> <users-unsubscribe@**tapestry.****apache.org<http://tapestry.** >>>>>> apache.org <http://tapestry.apache.org>> >>>>>> <users-unsubscribe@**tapestry.**apache.org<http://tapestry.apache.org> >>>>>> <users-unsubscribe@**tapestry.apache.org<users-unsubscr...@tapestry.apache.org> >>>>>> > >>>>>> > >>>>>> > >>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------********------------------------** >>>>>> --**--** >>>>>> >>>>> --**--------- >>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.******a**pache.org< >>>>> http://apache.org**> >>>>> <users-unsubscribe@**tapestry.****apache.org < >>>>> http://tapestry.apache.org> >>>>> <users-unsubscribe@**tapestry.**apache.org<http://tapestry.apache.org> >>>>> <users-unsubscribe@**tapestry.apache.org<users-unsubscr...@tapestry.apache.org> >>>>> > >>>>> > >>>>> > >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>> >>>>> >>>>> >>>>> >>>>> ------------------------------******--------------------------**--** >>>> --**--------- >>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.****a**pache.org< >>>> http://apache.org**> >>>> <users-unsubscribe@**tapestry.**apache.org <http://tapestry.apache.org> >>>> <users-unsubscribe@**tapestry.apache.org<users-unsubscr...@tapestry.apache.org> >>>> > >>>> > >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>>> >>>> >>>> >> ------------------------------****----------------------------** >> --**--------- >> To unsubscribe, e-mail: >> users-unsubscribe@tapestry.**a**pache.org<http://apache.org> >> <users-unsubscribe@**tapestry.apache.org<users-unsubscr...@tapestry.apache.org> >> > >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >> > > ------------------------------**------------------------------**--------- > To unsubscribe, e-mail: > users-unsubscribe@tapestry.**apache.org<users-unsubscr...@tapestry.apache.org> > For additional commands, e-mail: users-h...@tapestry.apache.org > >