You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2012/01/06 04:21:00 UTC

svn commit: r1227948 - /river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java

Author: peter_firmstone
Date: Fri Jan  6 03:21:00 2012
New Revision: 1227948

URL: http://svn.apache.org/viewvc?rev=1227948&view=rev
Log:
River-402 Fix null pointer exception

Modified:
    river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java

Modified: river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java
URL: http://svn.apache.org/viewvc/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java?rev=1227948&r1=1227947&r2=1227948&view=diff
==============================================================================
--- river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java (original)
+++ river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java Fri Jan  6 03:21:00 2012
@@ -804,7 +804,7 @@ public class ServiceDiscoveryManager {
 
     /** A wrapper class for a ServiceRegistrar. */
     private final static class ProxyReg  {
-	public ServiceRegistrar proxy;
+	private final ServiceRegistrar proxy;
 	public ProxyReg(ServiceRegistrar proxy) {
 	    if(proxy == null)  throw new IllegalArgumentException
                                                      ("proxy cannot be null");
@@ -813,14 +813,21 @@ public class ServiceDiscoveryManager {
 
 	public boolean equals(Object obj) {
 	    if (obj instanceof ProxyReg){
-		return proxy.equals(((ProxyReg)obj).proxy);
+		return getProxy().equals(((ProxyReg)obj).getProxy());
 	    } else return false;
 	}//end equals
 
 	public int hashCode() {
-	    return proxy.hashCode();
+	    return getProxy().hashCode();
 	}//end hashCode
 
+        /**
+         * @return the proxy
+         */
+        public ServiceRegistrar getProxy() {
+            return proxy;
+        }
+
     }//end class ServiceDiscoveryManager.ProxyReg
 
     /** The Listener class for the LeaseRenewalManager. */
@@ -907,7 +914,7 @@ public class ServiceDiscoveryManager {
 		long duration = getLeaseDuration();
 		if(duration < 0)  return;
                 try {
-                    EventReg eventReg = registerListener(reg.proxy,
+                    EventReg eventReg = registerListener(reg.getProxy(),
                                                          tmpl,
                                                          lookupListenerProxy,
                                                          duration);
@@ -929,7 +936,7 @@ public class ServiceDiscoveryManager {
                         cacheTerminated = bCacheTerminated;
                     }//end sync
                      ServiceDiscoveryManager.this.fail
-                         (e,reg.proxy,this.getClass().getName(),"run",
+                         (e, reg.getProxy(),this.getClass().getName(),"run",
                           "Exception occurred while attempting to register "
                           +"with the lookup service event mechanism",
                           cacheTerminated);
@@ -948,7 +955,7 @@ public class ServiceDiscoveryManager {
 	    }
             public void run() {
                 logger.finest("ServiceDiscoveryManager - LookupTask started");
-		ServiceRegistrar proxy = reg.proxy;
+		ServiceRegistrar proxy = reg.getProxy();
 		ServiceMatches matches;
                 /* For the given lookup, get all services matching the tmpl */
 		try {
@@ -1147,7 +1154,7 @@ public class ServiceDiscoveryManager {
                  * item, or a newly discovered item.
                  */
 		if(transition == ServiceRegistrar.TRANSITION_MATCH_NOMATCH) {
-                    handleMatchNoMatch(reg.proxy, sid, item);
+                    handleMatchNoMatch(reg.getProxy(), sid, item);
                 } else {//(transition == NOMATCH_MATCH or MATCH_MATCH)
                     (new NewOldServiceTask(reg, item,
                        (transition == ServiceRegistrar.TRANSITION_MATCH_MATCH),
@@ -1401,18 +1408,18 @@ public class ServiceDiscoveryManager {
                                           +"NewOldServiceTask completed");
                             return;
                         }//endif
-                        itemReg = new ServiceItemReg( reg.proxy, srvcItem );
+                        itemReg = new ServiceItemReg( reg.getProxy(), srvcItem );
                         serviceIdMap.put( thisTaskSid, itemReg );
 		    } else {
 			changed = true;
 		    }
                 }//end sync(serviceIdMap)
                 if(changed) {//a. old, previously discovered item
-                    itemMatchMatchChange(reg.proxy, srvcItem,
+                    itemMatchMatchChange(reg.getProxy(), srvcItem,
                                          itemReg, matchMatchEvent);
                 } else {//b. newly discovered item
                     ServiceItem newFilteredItem =
-                                  filterMaybeDiscard(srvcItem,reg.proxy,false);
+                                  filterMaybeDiscard(srvcItem, reg.getProxy(),false);
                     if(newFilteredItem != null) {
                         addServiceNotify(newFilteredItem);
                     }//endif
@@ -1470,7 +1477,7 @@ public class ServiceDiscoveryManager {
 		ServiceRegistrar proxy = null;
                 ServiceItem item;
                 synchronized(itemReg) {
-                    item = itemReg.removeProxy(reg.proxy);//disassociate the LUS
+                    item = itemReg.removeProxy(reg.getProxy());//disassociate the LUS
 		    if (item != null) {// new LUS chosen to track changes
 			proxy = itemReg.proxy;
 		    } else if( itemReg.hasNoProxys() ) {//no more LUSs, remove from map
@@ -1879,16 +1886,18 @@ public class ServiceDiscoveryManager {
 		    eReg.lookupsPending++;
                     t = new LookupTask(reg, taskSeqN++, eReg);
                     if( logger.isLoggable(Levels.HANDLED) ) {
-                        String msg ="notifyServiceMap - GAP in event sequence "
-                                     +"[serviceRegistrar={0}], "
-                                     +"[serviceItem={1}, "
-                                     +"serviceID={2}], "
-                                     +"[eventSource={3}, "
-                                     +"eventID={4,number,#}, "
-                                     +"oldSeqN={5,number,#}, "
-                                     +"newSeqN={6,number,#}]";
-                        Object[] params = new Object[] { reg.proxy,
-                                                         item.service,
+                        StringBuilder sb = new StringBuilder(300);
+                                    sb.append("notifyServiceMap - GAP in event sequence ")
+                                     .append("[serviceRegistrar={0}], ")
+                                     .append("[serviceItem={1}, ")
+                                     .append("serviceID={2}], ")
+                                     .append("[eventSource={3}, ")
+                                     .append("eventID={4,number,#}, ")
+                                     .append("oldSeqN={5,number,#}, ")
+                                     .append("newSeqN={6,number,#}]");
+                        String msg = sb.toString();
+                        Object[] params = new Object[] { reg !=null ? reg.getProxy() : "",
+                                                         item != null ? item.service : "",
                                                          sid,
                                                          eventSource,
                                                          new Long(eventID),
@@ -2511,7 +2520,7 @@ public class ServiceDiscoveryManager {
 	    while(iter.hasNext()) {
 		ProxyReg reg = (ProxyReg)iter.next();
 		cacheAddProxy(reg);
-		if(notifies != null)  listenerDiscovered(reg.proxy, notifies);
+		if(notifies != null)  listenerDiscovered(reg.getProxy(), notifies);
 	    }//end loop
 	}//end DiscMgrListener.discovered
 
@@ -2846,7 +2855,7 @@ public class ServiceDiscoveryManager {
 	Iterator iter = proxyRegSet.iterator();
 	while(iter.hasNext()) {
 	    ProxyReg reg = (ProxyReg)iter.next();
-	    proxys[k++] = reg.proxy;
+	    proxys[k++] = reg.getProxy();
 	}//end loop
 	return proxys;
     }//end buildServiceRegistrar
@@ -3613,7 +3622,7 @@ public class ServiceDiscoveryManager {
 	Iterator iter = proxyRegSet.iterator();
 	while(iter.hasNext()) {
 	    ProxyReg reg =(ProxyReg)iter.next();
-	    if(reg.proxy.equals(proxy))  return reg;
+	    if(reg.getProxy().equals(proxy))  return reg;
 	}//end loop
     	return null;
     }//end findReg