You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ui...@apache.org on 2015/01/31 14:35:46 UTC

svn commit: r1656189 - /felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java

Author: uiterlix
Date: Sat Jan 31 13:35:45 2015
New Revision: 1656189

URL: http://svn.apache.org/r1656189
Log:
Removed warnings and unused methods. Added generics.

Modified:
    felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java

Modified: felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java?rev=1656189&r1=1656188&r2=1656189&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java (original)
+++ felix/sandbox/pderop/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/tracker/ServiceTracker.java Sat Jan 31 13:35:45 2015
@@ -17,7 +17,6 @@ package org.apache.felix.dm.tracker;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -27,7 +26,6 @@ import java.util.Map.Entry;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.impl.ServiceUtil;
 import org.osgi.framework.AllServiceListener;
 import org.osgi.framework.BundleContext;
@@ -261,8 +259,8 @@ public class ServiceTracker implements S
 		this.trackReference = null;
 		this.trackClass = null;
 		final Version frameworkVersion = (Version) AccessController
-				.doPrivileged(new PrivilegedAction() {
-					public Object run() {
+				.doPrivileged(new PrivilegedAction<Version>() {
+					public Version run() {
 						String version = context
 								.getProperty(Constants.FRAMEWORK_VERSION);
 						return (version == null) ? Version.emptyVersion
@@ -892,82 +890,13 @@ public class ServiceTracker implements S
 	     * A list of services that are currently hidden because there is an aspect available with a higher ranking.
 	     * @GuardedBy this
 	     */
-	    private final List m_hidden = new ArrayList();
-	    
-	    /**
-	     * Returns the highest hidden aspect for the specified service ID.
-	     * 
-	     * @param serviceId the service ID
-	     * @return a service reference, or <code>null</code> if there was no such service
-	     */
-	    private ServiceReference highestHidden(long serviceId) {
-	        ServiceReference result = null;
-	        int max = Integer.MIN_VALUE;
-	        synchronized (this) {
-    	        for (int i = 0; i < m_hidden.size(); i++) {
-    	            ServiceReference ref = (ServiceReference) m_hidden.get(i);
-    	            Long sid = (Long) ref.getProperty(Constants.SERVICE_ID);
-    	            Long aid = (Long) ref.getProperty(DependencyManager.ASPECT);
-    	            if ((aid != null && aid.longValue() == serviceId) 
-    	                || (aid == null && sid != null && sid.longValue() == serviceId)) {
-    	                Integer ranking = (Integer) ref.getProperty(Constants.SERVICE_RANKING);
-    	                int r = 0;
-    	                if (ranking != null) {
-    	                    r = ranking.intValue();
-    	                }
-    	                if (r > max) {
-    	                    max = r;
-    	                    result = ref;
-    	                }
-    	            }
-    	        }
-	        }
-	        return result;
-	    }
-	    
-        /**
-         * Returns the highest tracked service for the specified service ID.
-         * 
-         * @param serviceId the service ID
-         * @return a service reference, or <code>null</code> if there was no such service
-         */
-        private ServiceReference highestTracked(long serviceId) {
-            ServiceReference result = null;
-            int max = Integer.MIN_VALUE;
-            
-            synchronized (this) {
-                int length = size();
-                if (length == 0) {
-                    return null;
-                }
-                Object[] trackedServices = getTracked(new ServiceReference[length]);
-                for (int i = 0; i < trackedServices.length; i++) {
-                    ServiceReference ref = (ServiceReference) trackedServices[i];
-                    Long sid = (Long) ref.getProperty(Constants.SERVICE_ID);
-                    Long aid = (Long) ref.getProperty(DependencyManager.ASPECT);
-                    if ((aid != null && aid.longValue() == serviceId) 
-                        || (aid == null && sid != null && sid.longValue() == serviceId)) {
-                        Integer ranking = (Integer) ref.getProperty(Constants.SERVICE_RANKING);
-                        int r = 0;
-                        if (ranking != null) {
-                            r = ranking.intValue();
-                        }
-                        if (r > max) {
-                            max = r;
-                            result = ref;
-                        }
-                    }
-                }
-                return result;
-            }
-        }
-        
-        private final HashMap m_highestTrackedCache = new HashMap();
+	    private final Map<Long, TreeSet<ServiceReference>> m_highestTrackedCache = new HashMap<>();
+	    private final Map<Long, TreeSet<ServiceReference>> m_highestHiddenCache = new HashMap<>();
         
         private ServiceReference highestTrackedCache(long serviceId) {
             Long sid = Long.valueOf(serviceId);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestTrackedCache.get(sid);
+            	TreeSet<ServiceReference> services = m_highestTrackedCache.get(sid);
             	if (services != null && services.size() > 0) {
             		ServiceReference result = (ServiceReference) services.last();
             		return result;
@@ -979,9 +908,9 @@ public class ServiceTracker implements S
         private void addHighestTrackedCache(ServiceReference reference) {
             Long serviceId = ServiceUtil.getServiceIdObject(reference);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestTrackedCache.get(serviceId);
+            	TreeSet<ServiceReference> services = m_highestTrackedCache.get(serviceId);
             	if (services == null) {
-            		services = new TreeSet();
+            		services = new TreeSet<ServiceReference>();
             		m_highestTrackedCache.put(serviceId, services);
             	}
             	services.add(reference);
@@ -991,7 +920,7 @@ public class ServiceTracker implements S
         private void removeHighestTrackedCache(ServiceReference reference) {
             Long serviceId = ServiceUtil.getServiceIdObject(reference);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestTrackedCache.get(serviceId);
+            	TreeSet<ServiceReference> services = m_highestTrackedCache.get(serviceId);
             	if (services != null) {
             		services.remove(reference);
             	}
@@ -1004,12 +933,10 @@ public class ServiceTracker implements S
 			}
         }
         
-        private final HashMap m_highestHiddenCache = new HashMap();
-        
         private ServiceReference highestHiddenCache(long serviceId) {
             Long sid = Long.valueOf(serviceId);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestHiddenCache.get(sid);
+            	TreeSet<ServiceReference> services = m_highestHiddenCache.get(sid);
 	            if (services != null && services.size() > 0) {
 	                ServiceReference result = (ServiceReference) services.last();
 	                return result;
@@ -1021,9 +948,9 @@ public class ServiceTracker implements S
         private void addHighestHiddenCache(ServiceReference reference) {
             Long serviceId = ServiceUtil.getServiceIdObject(reference);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestHiddenCache.get(serviceId);
+            	TreeSet<ServiceReference> services = m_highestHiddenCache.get(serviceId);
             	if (services == null) {
-            		services = new TreeSet();
+            		services = new TreeSet<ServiceReference>();
             		m_highestHiddenCache.put(serviceId, services);
             	}
             	services.add(reference);
@@ -1033,7 +960,7 @@ public class ServiceTracker implements S
         private void removeHighestHiddenCache(ServiceReference reference) {
             Long serviceId = ServiceUtil.getServiceIdObject(reference);
             synchronized (this) {
-            	TreeSet services = (TreeSet) m_highestHiddenCache.get(serviceId);
+            	TreeSet<ServiceReference> services = m_highestHiddenCache.get(serviceId);
             	if (services != null) {
             		services.remove(reference);
             	}
@@ -1063,7 +990,7 @@ public class ServiceTracker implements S
 		 */
 		Tracked() {
 			super();
-			setTracked(new HashMapCache());
+			setTracked(new HashMapCache<Object, Object>());
 		}
 		
 		void setInitial(Object[] list) {
@@ -1074,7 +1001,7 @@ public class ServiceTracker implements S
 		    	// not hiding aspects
 		    	super.setInitial(list);
 		    } else { 
-			    Map highestRankedServiceMap = new HashMap(); // <Long, RankedService>
+			    Map<Long, RankedService> highestRankedServiceMap = new HashMap<>();
 			    for (int i = 0; i < list.length; i++) {
 			    	ServiceReference sr = (ServiceReference) list[i];
 			    	if (sr != null) {
@@ -1100,8 +1027,8 @@ public class ServiceTracker implements S
 			    if (highestRankedServiceMap.size() > 0) {
 			        Object[] result = new Object[highestRankedServiceMap.size()];
 			        int index = 0;
-			        for(Iterator it = highestRankedServiceMap.entrySet().iterator(); it.hasNext(); ) {
-			        	Entry entry = (Entry) it.next();
+			        for(Iterator<Entry<Long, RankedService>> it = highestRankedServiceMap.entrySet().iterator(); it.hasNext(); ) {
+			        	Entry<Long, RankedService> entry = it.next();
 			        	result[index] = ((RankedService)entry.getValue()).getServiceReference();
 			        	index++;
 			        }
@@ -1377,21 +1304,24 @@ public class ServiceTracker implements S
 			customizer.removedService((ServiceReference) item, object);
 		}
 		
-		class HashMapCache extends LinkedHashMap {
-		    public Object put(Object key, Object value) {
+		class HashMapCache<K, V> extends LinkedHashMap<K, V> {
+
+			private static final long serialVersionUID = 1627005136730183946L;
+
+			public V put(K key, V value) {
 		        addHighestTrackedCache((ServiceReference) key);
 		        return super.put(key, value);
 		    }
 
-		    public void putAll(Map m) {
-		        Iterator i = m.keySet().iterator();
+		    public void putAll(Map<? extends K, ? extends V> m) {
+		        Iterator<? extends K> i = m.keySet().iterator();
 		        while (i.hasNext()) {
 		            addHighestTrackedCache((ServiceReference) i.next());
 		        }
 		        super.putAll(m);
 		    }
 
-		    public Object remove(Object key) {
+		    public V remove(Object key) {
 		        removeHighestTrackedCache((ServiceReference) key);
 		        return super.remove(key);
 		    }
@@ -1504,7 +1434,7 @@ public class ServiceTracker implements S
 		 */
 		AllTracked() {
 			super();
-            setTracked(new HashMapCache());
+            setTracked(new HashMapCache<Object, Object>());
 		}
 	}