[infinispan-commits] Infinispan SVN: r446 - in trunk/core/src: main/java/org/infinispan/notifications/cachemanagerlistener/event and 3 other directories.

infinispan-commits at lists.jboss.org infinispan-commits at lists.jboss.org
Fri Jun 12 07:02:39 EDT 2009


Author: manik.surtani at jboss.com
Date: 2009-06-12 07:02:38 -0400 (Fri, 12 Jun 2009)
New Revision: 446

Modified:
   trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifier.java
   trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImpl.java
   trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/event/EventImpl.java
   trunk/core/src/main/java/org/infinispan/remoting/transport/Transport.java
   trunk/core/src/main/java/org/infinispan/remoting/transport/jgroups/JGroupsTransport.java
   trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImplTest.java
   trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierTest.java
Log:
Provide view ID in view change notification

Modified: trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifier.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifier.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifier.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -21,7 +21,7 @@
     * Notifies all registered listeners of a viewChange event.  Note that viewChange notifications are ALWAYS sent
     * immediately.
     */
-   void notifyViewChange(List<Address> members, Address myAddress);
+   void notifyViewChange(List<Address> members, Address myAddress, int viewId);
 
    void notifyCacheStarted(String cacheName);
 

Modified: trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImpl.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImpl.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -55,10 +55,11 @@
       this.cacheManager = cacheManager;
    }
 
-   public void notifyViewChange(List<Address> members, Address myAddress) {
+   public void notifyViewChange(List<Address> members, Address myAddress, int viewId) {
       if (!viewChangedListeners.isEmpty()) {
          EventImpl e = new EventImpl();
          e.setLocalAddress(myAddress);
+         e.setViewId(viewId);
          e.setNewMemberList(members);
          e.setCacheManager(cacheManager);
          e.setType(Event.Type.VIEW_CHANGED);

Modified: trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/event/EventImpl.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/event/EventImpl.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/main/java/org/infinispan/notifications/cachemanagerlistener/event/EventImpl.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -18,16 +18,18 @@
    Type type;
    List<Address> newMemberList;
    Address localAddress;
+   int viewId;
 
    public EventImpl() {
    }
 
-   public EventImpl(String cacheName, CacheManager cacheManager, Type type, List<Address> newMemberList, Address localAddress) {
+   public EventImpl(String cacheName, CacheManager cacheManager, Type type, List<Address> newMemberList, Address localAddress, int viewId) {
       this.cacheName = cacheName;
       this.cacheManager = cacheManager;
       this.type = type;
       this.newMemberList = newMemberList;
       this.localAddress = localAddress;
+      this.viewId = viewId;
    }
 
    public String getCacheName() {
@@ -66,6 +68,14 @@
       return localAddress;
    }
 
+   public int getViewId() {
+      return viewId;
+   }
+
+   public void setViewId(int viewId) {
+      this.viewId = viewId;
+   }
+
    public void setLocalAddress(Address localAddress) {
       this.localAddress = localAddress;
    }
@@ -77,7 +87,7 @@
 
       EventImpl event = (EventImpl) o;
 
-      if (cacheManager != null ? !cacheManager.equals(event.cacheManager) : event.cacheManager != null) return false;
+      if (viewId != event.viewId) return false;
       if (cacheName != null ? !cacheName.equals(event.cacheName) : event.cacheName != null) return false;
       if (localAddress != null ? !localAddress.equals(event.localAddress) : event.localAddress != null) return false;
       if (newMemberList != null ? !newMemberList.equals(event.newMemberList) : event.newMemberList != null)
@@ -90,10 +100,10 @@
    @Override
    public int hashCode() {
       int result = cacheName != null ? cacheName.hashCode() : 0;
-      result = 31 * result + (cacheManager != null ? cacheManager.hashCode() : 0);
       result = 31 * result + (type != null ? type.hashCode() : 0);
       result = 31 * result + (newMemberList != null ? newMemberList.hashCode() : 0);
       result = 31 * result + (localAddress != null ? localAddress.hashCode() : 0);
+      result = 31 * result + viewId;
       return result;
    }
 
@@ -104,6 +114,7 @@
             ", type=" + type +
             ", newMemberList=" + newMemberList +
             ", localAddress=" + localAddress +
+            ", viewId=" + viewId +
             '}';
    }
 }

Modified: trunk/core/src/main/java/org/infinispan/remoting/transport/Transport.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/remoting/transport/Transport.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/main/java/org/infinispan/remoting/transport/Transport.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -123,4 +123,5 @@
    @Stop
    void stop();
 
+   int getViewId();
 }

Modified: trunk/core/src/main/java/org/infinispan/remoting/transport/jgroups/JGroupsTransport.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/remoting/transport/jgroups/JGroupsTransport.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/main/java/org/infinispan/remoting/transport/jgroups/JGroupsTransport.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -113,6 +113,10 @@
       }
    }
 
+   public int getViewId() {
+      return (int) channel.getView().getVid().getId();
+   }
+
    public void stop() {
       try {
          if (channel != null && channel.isOpen()) {
@@ -270,6 +274,7 @@
    public Address getAddress() {
       if (address == null && channel != null) {
          address = new JGroupsAddress(channel.getAddress());
+//         address = new JGroupsAddress(channel.getLocalAddress());
       }
       return address;
    }
@@ -396,7 +401,7 @@
 
          // now notify listeners - *after* updating the coordinator. - JBCACHE-662
          if (needNotification && notifier != null) {
-            notifier.notifyViewChange(members, getAddress());
+            notifier.notifyViewChange(members, getAddress(), (int) newView.getVid().getId());
          }
 
          // Wake up any threads that are waiting to know about who the coordinator is

Modified: trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImplTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImplTest.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierImplTest.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -28,11 +28,12 @@
    public void testNotifyViewChanged() {
       Address a = EasyMock.createNiceMock(Address.class);
       List<Address> addresses = Collections.emptyList();
-      n.notifyViewChange(addresses, a);
+      n.notifyViewChange(addresses, a, 100);
 
       assert cl.invocationCount == 1;
       assert ((ViewChangedEvent) cl.getEvent()).getLocalAddress() == a;
       assert ((ViewChangedEvent) cl.getEvent()).getNewMemberList() == addresses;
+      assert ((ViewChangedEvent) cl.getEvent()).getViewId() == 100;
       assert cl.getEvent().getType() == Event.Type.VIEW_CHANGED;
    }
 

Modified: trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierTest.java	2009-06-12 11:01:41 UTC (rev 445)
+++ trunk/core/src/test/java/org/infinispan/notifications/cachemanagerlistener/CacheManagerNotifierTest.java	2009-06-12 11:02:38 UTC (rev 446)
@@ -2,11 +2,11 @@
 
 import static org.easymock.EasyMock.*;
 import org.infinispan.Cache;
-import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.infinispan.config.Configuration;
 import org.infinispan.manager.CacheManager;
 import org.infinispan.remoting.transport.Address;
 import org.infinispan.test.TestingUtil;
+import org.infinispan.test.fwk.TestCacheManagerFactory;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
@@ -17,9 +17,8 @@
    CacheManager cm1;
    CacheManager cm2;
 
-   @AfterMethod 
-   public void tearDown()
-   {
+   @AfterMethod
+   public void tearDown() {
       TestingUtil.killCacheManagers(cm1, cm2);
    }
 
@@ -43,7 +42,7 @@
       CacheManagerNotifier mockNotifier = createMock(CacheManagerNotifier.class);
       CacheManagerNotifier origNotifier = TestingUtil.replaceComponent(cm1, CacheManagerNotifier.class, mockNotifier, true);
       try {
-         mockNotifier.notifyViewChange(isA(List.class), eq(myAddress));
+         mockNotifier.notifyViewChange(isA(List.class), eq(myAddress), anyInt());
          replay(mockNotifier);
          // start a second cache.
          Cache c2 = cm2.getCache("cache");




More information about the infinispan-commits mailing list