[richfaces-issues] [JBoss JIRA] (RF-12303) Custom topiclistener not working on richfaces push component of verion 4.2.2-Final and older

Lukáš Fryč (JIRA) jira-events at lists.jboss.org
Tue Dec 11 04:16:19 EST 2012


     [ https://issues.jboss.org/browse/RF-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukáš Fryč resolved RF-12303.
-----------------------------

    Resolution: Done

    
> Custom topiclistener not working on richfaces push component of verion 4.2.2-Final and older
> --------------------------------------------------------------------------------------------
>
>                 Key: RF-12303
>                 URL: https://issues.jboss.org/browse/RF-12303
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-a4j-core, component-push/poll
>    Affects Versions: 4.2.2.Final
>         Environment: No deponds on what environment.
>            Reporter: Daniel Yang
>            Assignee: Lukáš Fryč
>              Labels: push, richfaces
>             Fix For: 4.3.0.M3
>
>   Original Estimate: 15 minutes
>  Remaining Estimate: 15 minutes
>
> See description here: 
>    https://community.jboss.org/message/736651#736651
> Copy it again:
> I use it like following lines:
>  
> {code:java}
>  TopicsContext topicsContext = TopicsContext.lookup();
>         Topic topic = topicsContext.getOrCreateTopic(new TopicKey("test"));
>         topic.setMessageDataSerializer(DefaultMessageDataSerializer.instance());
>         topic.addTopicListener(new SessionTopicListener2() {
>             @Override
>             public void processPreSubscriptionEvent(SessionPreSubscriptionEvent event) throws SubscriptionFailureException {
>                //TODO
>             }
>             @Override
>             public void processSubscriptionEvent(SessionSubscriptionEvent event) {
>                  //TODO
>             }
>             @Override
>             public void processUnsubscriptionEvent(SessionUnsubscriptionEvent event) {
>                  //TODO
>             }
>         });
> {code}
>  
> I noted that listeners in TopicImpl are all the SessionTopicListener2 type, because add method is:
> {code:java} 
>     public void addTopicListener(TopicListener topicListener) {
>         TopicListener listener = topicListener;
>         if (listener instanceof SessionTopicListener) {
>             listener = new SessionTopicListenerWrapper((SessionTopicListener) listener);
>         }
>         listeners.add(listener);
>     }
> {code}
>  
>  
> All SessionTopicListeners are wrapped to type SessionTopicListener2, and when event publish in TopicImpl, it check it if it is appropriate listener like this:
>  
> {code:java}
>     public void publishEvent(TopicEvent event) {
>         for (TopicListener listener : listeners) {
>             if (event.isAppropriateListener(listener)) {
>                 try {
>                     event.invokeListener(listener);
>                 } catch (Exception e) {
>                     logError(e);
>                 }
>             }
>         }
>     }
> {code}
>  
> But event type SessionPreSubscriptionEvent, SessionSubscriptionEvent or SessionUnsubscriptionEvent does not override the mothed isAppropriateListener, so when checking, it use the method of its parent SessionTopicEvent, its parent method is like this:
> {code:java}
>  
>     @Override
>     public boolean isAppropriateListener(EventListener listener) {
>         return (listener instanceof SessionTopicListener);
>     }
> {code}
>  
> Then it always returns false for above three SessionTopicEvent , and the custom listeners will never be called. I think it may be changed from " return (listener instanceof SessionTopicListener);" to  return (listener instanceof SessionTopicListener2); or override it in seperator implementation of type SessionTopicEvent.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the richfaces-issues mailing list