Hi,
I wrote a workaround in the form of a TreeCacheListenener. Please let me know 
what you think about.


  | class Listener implements TreeCacheListener
  | {
  |     private TreeCache cache;
  |     private View view;
  |     
  |     private static final Fqn backupFqn = new 
Fqn(BuddyManager.BUDDY_BACKUP_SUBTREE);
  |     private static final Option option = new Option();
  |     
  |     static
  |     {
  |             option.setForceDataGravitation(true);
  |     }
  |     
  |     private Vector getMembersLeft(View old_view, View new_view)
  |     {
  |             final Vector result = new Vector();
  |             final Vector members = old_view.getMembers();
  |             final Vector new_members = new_view.getMembers();
  | 
  |             for(int i=0; i < members.size(); i++) 
  |             {
  |                     final Object mbr = members.elementAt(i);
  | 
  |                     if(!new_members.contains(mbr))
  |                     {
  |                             result.addElement(mbr);
  |                     }
  |             }
  | 
  |             return(result);
  |     }
  | 
  |     private void check(Vector membersLeft)
  |     {
  |             for(int i=0, n=membersLeft.size(); i<n ; i++)
  |             {
  |                     final Address addr = (Address)membersLeft.get(i);
  |                     final Fqn fqn = new Fqn(backupFqn, 
  |                                             new 
Fqn(BuddyManager.getGroupNameFromAddress(addr)));
  | 
  |                     if(cache.exists(fqn))
  |                     {
  |                             try
  |                             {
  |                                     final Set children = 
cache.getChildrenNames(fqn);
  | 
  |                                     for(final Iterator 
it=children.iterator() ; it.hasNext() ;)
  |                                     {
  |                                             cache.get(new 
Fqn((String)it.next()), option);
  |                                     }
  |                             }
  |                             catch(CacheException ex)
  |                             {
  |                                     ex.printStackTrace();
  |                             }
  |                     }
  |             }
  |     }
  |     
  | 
  |     public void cacheStarted(TreeCache cache)
  |     {
  |             this.cache = cache;
  |             this.view = new View(new ViewId(cache.getCoordinator()), 
cache.getMembers());
  |     }
  |     
  |     public void cacheStopped(TreeCache cache)       {}
  |     public void nodeCreated(Fqn fqn)                        {}
  |     public void nodeEvicted(Fqn fqn)                        {}
  |     public void nodeLoaded(Fqn fqn)                         {}
  |     public void nodeModified(Fqn fqn)                       {}
  |     public void nodeRemoved(Fqn fqn)                        {}
  |     public void nodeVisited(Fqn fqn)                        {}
  | 
  |     public void viewChange(View new_view)
  |     {
  |             if(view!=null)
  |             {
  |                     final Vector membersLeft = getMembersLeft(view, 
new_view);
  |                     
  |                     if(!membersLeft.isEmpty())
  |                     {
  |                                     check(membersLeft);
  |                     }
  |             }
  |             
  |             view = new_view;
  |     }
  | }
  | 
  | 

thanks and regards
gianluca 
-- 
Gianluca Puggelli
skype:pugg1138

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4006387#4006387

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4006387
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to