You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Tom Nys <ru...@hotmail.com> on 2013/04/04 10:20:52 UTC

Live support solution

Hi there,

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.

Are there any others i can try to implement?

Greets
Runesmacher

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
I've created an issue here
https://github.com/uklance/tapestry-cometd/issues/55

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
It's fine in the sidebar, you just need to understand the limitations of
trying to hack tapestry to function outside of the normal request /
response flow.

CometD requires that the HttpSession is created before the push occurs.
Perhaps you could initialize your httpsession scoped list in the setup
render of your page.

Or better yet, your chat history etc could be stored in an IOC service (a
singleton perhaps?) instead of storing in the HttpSession. Take a look at
my ChatService example. You will most likely find that your code quality
and scalability improves as you reduce HttpSession usage.

As a rule, I rarely find it necessary to store any more than a userId in
the HttpSession. Everything else is delegated to IOC services.

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
I think i may need to step away from the idea of puttingit in the sidebar. 
since that is the reason for all the problems.

I get following error at some times

I thin it is becous the Onchat function doesn't know where that session is?

part of the onchat function that is called:

Block onChat(ChatMessage inMessage) {
        if (chatConversation == null)
            chatConversation = new ArrayList<ChatMessage>();
        if (!chatConversation.contains(inMessage))
            chatConversation.add(inMessage);

        return messageBlock;
}

@SetupRender
void setup() {
    countOpen = 0;
    outMessage = "";
    if (chatConversation == null)
        chatConversation = new ArrayList<ChatMessage>();
    if (chatUsers == null)
        chatUsers = new ArrayList<User>();
}

java.lang.IllegalStateException
!session

Filter stack frames Stack trace

        org.cometd.server.transport.HttpTransport$HttpContext.setHttpSessionAttribute(HttpTransport.java:177)
        org.lazan.t5.cometd.services.internal.BayeuxContextHttpSession.setAttribute(BayeuxContextHttpSession.java:31)
        org.apache.tapestry5.internal.services.SessionImpl.setAttribute(SessionImpl.java:57)
        org.apache.tapestry5.internal.transform.SessionAttributeWorker$SessionKeyConduit.set(SessionAttributeWorker.java:59)
        be.mySite.components.sidepanel.ChatSide.conduit_set_chatConversation(ChatSide.java)
        be.mySite.components.sidepanel.ChatSide.onChat(ChatSide.java:82)
        be.mySite.components.sidepanel.ChatSide.dispatchComponentEvent(ChatSide.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1053)
        org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
        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.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
        org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
        org.lazan.t5.cometd.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
        org.lazan.t5.cometd.services.internal.ComponentJSONRendererImpl$1.invoke(ComponentJSONRendererImpl.java:83)
        org.lazan.t5.cometd.services.internal.ComponentJSONRendererImpl$1.invoke(ComponentJSONRendererImpl.java:58)
        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)

-----Oorspronkelijk bericht----- 
From: Lance Java
Sent: Tuesday, April 30, 2013 9:56 AM
To: Tapestry users
Subject: Re: Live support solution

Hmm... Your use case is really needing the entire server spec in your push
event innit? It seems as if you are generating links in your push event's
block, correct?

Unfortunately, FakeHttpServletResponse does not have an implementation for
encodeURL which is required by AbstractLink to generate links.

The proper solution here is for tapestry-cometd to allow IOC contributions
for all of the unimplemented methods in FakeHttpServletRequest and
FakeHttpServletResponse.

I can see a couple of workarounds:

1. Generate your links by hand in your push block instead of pagelink /
actionlink / eventlink.

2. Don't generate your links in the push block. Somehow generate them in
the page and use javascript to copy them into your push block after it has
rendered.

Cheers,
Lance 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
Hmm... Your use case is really needing the entire server spec in your push
event innit? It seems as if you are generating links in your push event's
block, correct?

Unfortunately, FakeHttpServletResponse does not have an implementation for
encodeURL which is required by AbstractLink to generate links.

The proper solution here is for tapestry-cometd to allow IOC contributions
for all of the unimplemented methods in FakeHttpServletRequest and
FakeHttpServletResponse.

I can see a couple of workarounds:

1. Generate your links by hand in your push block instead of pagelink /
actionlink / eventlink.

2. Don't generate your links in the push block. Somehow generate them in
the page and use javascript to copy them into your push block after it has
rendered.

Cheers,
Lance

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
The session works! but now i'm left over with this problem.

org.apache.tapestry5.internal.services.RenderQueueException
Render queue error in 
BeginRender[ticketing/EmployerTicketCreate:layout.chatside.eventlink]: 
encodeURL

activeComponents

        ticketing/EmployerTicketCreate:layout.chatside.loop (class 
org.apache.tapestry5.corelib.components.Loop)
        classpath:be/pensionarchitects/adminpanel/components/sidepanel/ChatSide.tml, 
line 41
        36    update="replace" session="true" />
        37
        38    <t:zone t:id="chatPanelZone" update="show">
        39    <t:block t:id="messageBlock">
        40    <ul>
        41    <t:loop source="chatUsers" value="loopUser">
        42    <li>
        43    <t:eventlink event="setUser" 
context="${loopUSer}">${loopUser.FullName}
        44    </t:eventlink>
        45    </li>
        46    </t:loop>

java.lang.UnsupportedOperationException
encodeURL

Filter stack frames Stack trace

        org.lazan.t5.cometd.services.internal.FakeHttpServletResponse.encodeURL(FakeHttpServletResponse.java:117)
        org.apache.tapestry5.internal.services.ResponseImpl.encodeURL(ResponseImpl.java:62)
        org.apache.tapestry5.internal.services.LinkImpl.buildAnchoredURI(LinkImpl.java:153)
        org.apache.tapestry5.internal.services.LinkImpl.toURI(LinkImpl.java:143)
        org.apache.tapestry5.corelib.base.AbstractLink.buildHref(AbstractLink.java:68)
        org.apache.tapestry5.corelib.base.AbstractLink.writeLink(AbstractLink.java:99)
        org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java:59)
        org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.invokeComponent(ComponentPageElementImpl.java:202)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:143)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.render(ComponentPageElementImpl.java:209)
        org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72)
        org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124)
        org.apache.tapestry5.internal.services.PageRenderQueueImpl$1.renderMarkup(PageRenderQueueImpl.java:142)
        org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.renderMarkup(RenderCommandComponentEventResultProcessor.java:78)
        org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62)
        org.apache.tapestry5.internal.services.ajax.AjaxResponseRendererImpl$1.renderMarkup(AjaxResponseRendererImpl.java:67)
        org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62)
        org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:159)
        org.apache.tapestry5.internal.services.PartialMarkupRendererTerminator.renderMarkup(PartialMarkupRendererTerminator.java:45)
        org.got5.tapestry5.jquery.services.js.JSModule$2.renderMarkup(JSModule.java:58)
        be.mySite.services.AppModule$10.renderMarkup(AppModule.java:341)
        org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141)
        org.apache.tapestry5.services.TapestryModule$36.renderMarkup(TapestryModule.java:2125)
        org.apache.tapestry5.services.TapestryModule$35.renderMarkup(TapestryModule.java:2107)
        org.apache.tapestry5.services.TapestryModule$34.renderMarkup(TapestryModule.java:2091)
        org.apache.tapestry5.services.TapestryModule$33.renderMarkup(TapestryModule.java:2073)
        org.apache.tapestry5.services.TapestryModule$32.renderMarkup(TapestryModule.java:2048)
        org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl.renderPartialPageMarkup(AjaxPartialResponseRendererImpl.java:89)
        org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:58)
        org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.processResultValue(RenderCommandComponentEventResultProcessor.java:34)
        org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler$1.processResultValue(AjaxComponentEventRequestHandler.java:80)
        org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper.handleResult(ComponentResultProcessorWrapper.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
        org.apache.tapestry5.internal.services.EventImpl.storeResult(EventImpl.java:84)
        be.mySite.components.sidepanel.ChatSide.dispatchComponentEvent(ChatSide.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1053)
        org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
        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.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
        org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
        org.lazan.t5.cometd.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
        org.lazan.t5.cometd.services.internal.ComponentJSONRendererImpl$1.invoke(ComponentJSONRendererImpl.java:83)
        org.lazan.t5.cometd.services.internal.ComponentJSONRendererImpl$1.invoke(ComponentJSONRendererImpl.java:58)
        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)

-----Oorspronkelijk bericht----- 
From: Lance Java
Sent: Monday, April 29, 2013 8:55 PM
To: Tapestry users
Subject: Re: Live support solution

I've just checked in a fix to support the HttpSession in push events so you
can ignore the BayeuxServer / BayeuxContext code I gave you. You can now
use @SessionAttribute etc in your push events.

I've also added a "secure" attribute to the PushTarget component which you
can set to true.

Please give 0.9.17 a try

Cheers,
Lance.


On 29 April 2013 10:01, Tom Nys <ru...@hotmail.com> wrote:

> Thanks for the change. U'm nog getting the url error anymore, but i am
> getting another error.
>
> I am using an SSL connection, and i had to download the source code and
> change the secured boolean to true (as said in yor issue nr. 3)
>
> Also i needed to add
>
> <script type="text/javascript">
>    $(document).ready(function() {
>    var cometd =
>    $.cometd;
>    cometd.websocketEnabled = false;
>    });
> </script>
>
> to the top of my pages to be able to chat.
>
> But again, when i try to put the conversation into a session at the admin
> side of my program it gives me:
>
> java.lang.**IllegalStateException
>
> Session not registered, this is most likely because you have not set
> session = 'true' in the push mixin
>
>
> Filter stack frames Stack trace
>        org.lazan.t5.cometd.services.**internal.**
> ComponentJSONRendererImpl$1$1.**getSession(**ComponentJSONRendererImpl.**
> java:70)
>        org.apache.tapestry5.internal.**services.RequestImpl.**
> getSession(RequestImpl.java:**115)
>        org.apache.tapestry5.internal.**transform.**SessionAttributeWorker$
> **SessionKeyConduit.getSession(**SessionAttributeWorker.java:**64)
>        org.apache.tapestry5.internal.**transform.**SessionAttributeWorker$
> **SessionKeyConduit.get(**SessionAttributeWorker.java:**47)
>        be.mySite.components.**sidepanel.ChatSide.conduit_**
> get_chatConversation(ChatSide.**java)
>        be.mySite.components.**sidepanel.ChatSide.onChat(**
> ChatSide.java:89)
>        be.mySite.components.**sidepanel.ChatSide.**dispatchComponentEvent(
> **ChatSide.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.**services.**
> AjaxComponentEventRequestHandl**er.handle(**AjaxComponentEventRequestHandl
> **er.java:110)
>
>        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.**
> PageGlobalsComponentRequestFil**ter.handleComponentEvent(**
> PageGlobalsComponentRequestFil**ter.java:22)
>
>        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)
>
>
> TML:
> <t:cometd.pushtarget topic="prop:topic" event="chat"
>            update="replace" session="true" />
>
>
> JAVA
>    @SessionAttribute("Chat_**Converastion")
>    @Property
>    private List<ChatMessage> chatConversation;
>
>    @SetupRender
>    void setup() {
>        countOpen = 0;
>        outMessage = "";
>        if (chatConversation == null)
>            chatConversation = new ArrayList<ChatMessage>();
>        if (chatUsers == null)
>            chatUsers = new ArrayList<User>();
>    }
>
>    Block onChat(ChatMessage inMessage) {
>        if (!chatConversation.contains(**inMessage)) {
>            chatConversation.add(**inMessage);
>
>            this.inMessage = inMessage;
>    }
>
> Any idea why this could be?
>
>
> -----Oorspronkelijk bericht----- From: Lance Java
> Sent: Sunday, April 28, 2013 1:10 PM
>
> To: Tapestry users
> Subject: Re: Live support solution
>
> I've just committed changes to tapestry-cometd to support page activation
> context in push events. I've deployed version 0.9.16 to my github maven
> repository. Please increase your dependency version and give it a whirl.
>
> Cheers,
> Lance.
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
I've just checked in a fix to support the HttpSession in push events so you
can ignore the BayeuxServer / BayeuxContext code I gave you. You can now
use @SessionAttribute etc in your push events.

I've also added a "secure" attribute to the PushTarget component which you
can set to true.

Please give 0.9.17 a try

Cheers,
Lance.


On 29 April 2013 10:01, Tom Nys <ru...@hotmail.com> wrote:

> Thanks for the change. U'm nog getting the url error anymore, but i am
> getting another error.
>
> I am using an SSL connection, and i had to download the source code and
> change the secured boolean to true (as said in yor issue nr. 3)
>
> Also i needed to add
>
> <script type="text/javascript">
>    $(document).ready(function() {
>    var cometd =
>    $.cometd;
>    cometd.websocketEnabled = false;
>    });
> </script>
>
> to the top of my pages to be able to chat.
>
> But again, when i try to put the conversation into a session at the admin
> side of my program it gives me:
>
> java.lang.**IllegalStateException
>
> Session not registered, this is most likely because you have not set
> session = 'true' in the push mixin
>
>
> Filter stack frames Stack trace
>        org.lazan.t5.cometd.services.**internal.**
> ComponentJSONRendererImpl$1$1.**getSession(**ComponentJSONRendererImpl.**
> java:70)
>        org.apache.tapestry5.internal.**services.RequestImpl.**
> getSession(RequestImpl.java:**115)
>        org.apache.tapestry5.internal.**transform.**SessionAttributeWorker$
> **SessionKeyConduit.getSession(**SessionAttributeWorker.java:**64)
>        org.apache.tapestry5.internal.**transform.**SessionAttributeWorker$
> **SessionKeyConduit.get(**SessionAttributeWorker.java:**47)
>        be.mySite.components.**sidepanel.ChatSide.conduit_**
> get_chatConversation(ChatSide.**java)
>        be.mySite.components.**sidepanel.ChatSide.onChat(**
> ChatSide.java:89)
>        be.mySite.components.**sidepanel.ChatSide.**dispatchComponentEvent(
> **ChatSide.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.**services.**
> AjaxComponentEventRequestHandl**er.handle(**AjaxComponentEventRequestHandl
> **er.java:110)
>
>        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.**
> PageGlobalsComponentRequestFil**ter.handleComponentEvent(**
> PageGlobalsComponentRequestFil**ter.java:22)
>
>        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)
>
>
> TML:
> <t:cometd.pushtarget topic="prop:topic" event="chat"
>            update="replace" session="true" />
>
>
> JAVA
>    @SessionAttribute("Chat_**Converastion")
>    @Property
>    private List<ChatMessage> chatConversation;
>
>    @SetupRender
>    void setup() {
>        countOpen = 0;
>        outMessage = "";
>        if (chatConversation == null)
>            chatConversation = new ArrayList<ChatMessage>();
>        if (chatUsers == null)
>            chatUsers = new ArrayList<User>();
>    }
>
>    Block onChat(ChatMessage inMessage) {
>        if (!chatConversation.contains(**inMessage)) {
>            chatConversation.add(**inMessage);
>
>            this.inMessage = inMessage;
>    }
>
> Any idea why this could be?
>
>
> -----Oorspronkelijk bericht----- From: Lance Java
> Sent: Sunday, April 28, 2013 1:10 PM
>
> To: Tapestry users
> Subject: Re: Live support solution
>
> I've just committed changes to tapestry-cometd to support page activation
> context in push events. I've deployed version 0.9.16 to my github maven
> repository. Please increase your dependency version and give it a whirl.
>
> Cheers,
> Lance.
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
Unfortunately, CometD doesn't expose the HttpSession in a public API so I
can't pass it to tapestry in the FakeHttpServletRequest.

You can use the following code to get a session attribute:

   @Inject BayeuxServer bayeuxServer;

   HttpTransport transport = (HttpTransport)
bayeuxServer.getCurrentTransport();
   BayeuxContext bayeuxContext = transport.getContext();
   Object foo = bayeuxContext.getHttpSessionAttribute("foo");

I've added a TODO here:
https://github.com/uklance/tapestry-cometd/blob/master/src/main/java/org/lazan/t5/cometd/services/internal/AuthorizersImpl.java#L95

I have a few options that I'm considering at the moment but nothing is
clean.

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
Thanks for the change. U'm nog getting the url error anymore, but i am 
getting another error.

I am using an SSL connection, and i had to download the source code and 
change the secured boolean to true (as said in yor issue nr. 3)

Also i needed to add

<script type="text/javascript">
    $(document).ready(function() {
    var cometd =
    $.cometd;
    cometd.websocketEnabled = false;
    });
</script>

to the top of my pages to be able to chat.

But again, when i try to put the conversation into a session at the admin 
side of my program it gives me:

java.lang.IllegalStateException

Session not registered, this is most likely because you have not set session 
= 'true' in the push mixin

Filter stack frames Stack trace
        org.lazan.t5.cometd.services.internal.ComponentJSONRendererImpl$1$1.getSession(ComponentJSONRendererImpl.java:70)
        org.apache.tapestry5.internal.services.RequestImpl.getSession(RequestImpl.java:115)
        org.apache.tapestry5.internal.transform.SessionAttributeWorker$SessionKeyConduit.getSession(SessionAttributeWorker.java:64)
        org.apache.tapestry5.internal.transform.SessionAttributeWorker$SessionKeyConduit.get(SessionAttributeWorker.java:47)
        be.mySite.components.sidepanel.ChatSide.conduit_get_chatConversation(ChatSide.java)
        be.mySite.components.sidepanel.ChatSide.onChat(ChatSide.java:89)
        be.mySite.components.sidepanel.ChatSide.dispatchComponentEvent(ChatSide.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146)
        org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1053)
        org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
        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.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
        org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
        org.lazan.t5.cometd.services.internal.PageGlobalsComponentRequestFilter.handleComponentEvent(PageGlobalsComponentRequestFilter.java:22)
        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)


TML:
<t:cometd.pushtarget topic="prop:topic" event="chat"
            update="replace" session="true" />


JAVA
    @SessionAttribute("Chat_Converastion")
    @Property
    private List<ChatMessage> chatConversation;

    @SetupRender
    void setup() {
        countOpen = 0;
        outMessage = "";
        if (chatConversation == null)
            chatConversation = new ArrayList<ChatMessage>();
        if (chatUsers == null)
            chatUsers = new ArrayList<User>();
    }

    Block onChat(ChatMessage inMessage) {
        if (!chatConversation.contains(inMessage)) {
            chatConversation.add(inMessage);

            this.inMessage = inMessage;
    }

Any idea why this could be?

-----Oorspronkelijk bericht----- 
From: Lance Java
Sent: Sunday, April 28, 2013 1:10 PM
To: Tapestry users
Subject: Re: Live support solution

I've just committed changes to tapestry-cometd to support page activation
context in push events. I've deployed version 0.9.16 to my github maven
repository. Please increase your dependency version and give it a whirl.

Cheers,
Lance. 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
I've just committed changes to tapestry-cometd to support page activation
context in push events. I've deployed version 0.9.16 to my github maven
repository. Please increase your dependency version and give it a whirl.

Cheers,
Lance.

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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.

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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" <ru...@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" <ru...@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" <la...@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" <ru...@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" <ru...@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 <ru...@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>
>>>>>> <us...@tapestry.apache.org>
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> For additional commands, e-mail: users-help@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>
>>>>>> <us...@tapestry.apache.org>
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> For additional commands, e-mail: users-help@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>
>>>>> <us...@tapestry.apache.org>
>>>>> >
>>>>> >
>>>>> >
>>>>> For additional commands, e-mail: users-help@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>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>>>>
>> ------------------------------****----------------------------**
>> --**---------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>> <us...@tapestry.apache.org>
>> >
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
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
On 23 Apr 2013 08:15, "Tom Nys" <ru...@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" <la...@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/**
>> 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/**
>> 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/**
>> 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" <ru...@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" <ru...@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-**>
>>>> >
>>>> integration-with-cometd/<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-**
>>>> 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 <ru...@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>
>>>>> <us...@tapestry.apache.org>
>>>>> >
>>>>> >
>>>>> For additional commands, e-mail: users-help@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>
>>>>> <us...@tapestry.apache.org>
>>>>> >
>>>>> >
>>>>> For additional commands, e-mail: users-help@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>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: 
>>> users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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
On 23 Apr 2013 08:15, "Tom Nys" <ru...@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" <la...@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/**
>> 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/**
>> 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/**
>> 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" <ru...@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" <ru...@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-**>
>>>> >
>>>> integration-with-cometd/<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-**
>>>> 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 <ru...@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>
>>>>> <us...@tapestry.apache.org>
>>>>> >
>>>>> >
>>>>> For additional commands, e-mail: users-help@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>
>>>>> <us...@tapestry.apache.org>
>>>>> >
>>>>> >
>>>>> For additional commands, e-mail: users-help@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>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
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" <la...@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/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/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/ChatSubscriptionListener.java
>  On 22 Apr 2013 15:58, "Tom Nys" <ru...@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" <ru...@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-**>
>>> 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 <ru...@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>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>> ------------------------------****----------------------------**
>>>> --**---------
>>>> To unsubscribe, e-mail: 
>>>> users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: 
>>> users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: 
>> users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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" <la...@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/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/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/ChatSubscriptionListener.java
>  On 22 Apr 2013 15:58, "Tom Nys" <ru...@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" <ru...@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-**>
>>> 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 <ru...@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>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>> ------------------------------****----------------------------**
>>>> --**---------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>>> <us...@tapestry.apache.org>
>>>> >
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>

Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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/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/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/ChatSubscriptionListener.java
 On 22 Apr 2013 15:58, "Tom Nys" <ru...@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" <ru...@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-**>
>> 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 <ru...@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>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>>> <us...@tapestry.apache.org>
>>> >
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>> ------------------------------****----------------------------**
>> --**---------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**a**pache.org<http://apache.org>
>> <us...@tapestry.apache.org>
>> >
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
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" <ru...@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-**
> 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 <ru...@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.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: 
>> users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Lance Java <la...@googlemail.com>.
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" <ru...@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-**
> 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 <ru...@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.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org<us...@tapestry.apache.org>
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
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.AjaxLinkComponentEventResultProcessor.processResultValue(AjaxLinkComponentEventResultProcessor.java:41)
            org.apache.tapestry5.internal.services.AjaxLinkComponentEventResultProcessor.processResultValue(AjaxLinkComponentEventResultProcessor.java:27)
            org.apache.tapestry5.internal.services.AjaxPageNameComponentEventResultProcessor.processResultValue(AjaxPageNameComponentEventResultProcessor.java:55)
            org.apache.tapestry5.internal.services.AjaxPageNameComponentEventResultProcessor.processResultValue(AjaxPageNameComponentEventResultProcessor.java:29)
            org.apache.tapestry5.internal.services.AjaxComponentInstanceEventResultProcessor.processResultValue(AjaxComponentInstanceEventResultProcessor.java:56)
            org.apache.tapestry5.internal.services.AjaxComponentInstanceEventResultProcessor.processResultValue(AjaxComponentInstanceEventResultProcessor.java:30)
            org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler$1.processResultValue(AjaxComponentEventRequestHandler.java:80)
            org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper.handleResult(ComponentResultProcessorWrapper.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.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.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.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.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.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.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.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-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 <ru...@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.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Taha Siddiqi <ta...@gmail.com>.
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-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 <ru...@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.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 


Re: Live support solution

Posted by Tom Nys <ru...@hotmail.com>.
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 <ru...@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.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Live support solution

Posted by Thiago H de Paula Figueiredo <th...@gmail.com>.
On Thu, 04 Apr 2013 05:20:52 -0300, Tom Nys <ru...@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.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org