You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by mc...@apache.org on 2009/04/16 11:41:41 UTC

svn commit: r765541 - in /felix/trunk/deviceaccess/src/main/java/org/apache/felix/das: DeviceManager.java DriverAttributes.java util/DeviceAnalyzer.java util/Util.java

Author: mcculls
Date: Thu Apr 16 09:41:41 2009
New Revision: 765541

URL: http://svn.apache.org/viewvc?rev=765541&view=rev
Log:
FELIX-1030: apply patch from Dennis Geurts to fix issues revealed by new tests

Modified:
    felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java
    felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DriverAttributes.java
    felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/DeviceAnalyzer.java
    felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/Util.java

Modified: felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java?rev=765541&r1=765540&r2=765541&view=diff
==============================================================================
--- felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java (original)
+++ felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DeviceManager.java Thu Apr 16 09:41:41 2009
@@ -424,9 +424,11 @@
                     {
                         info( "used by driver: " + bundle.getSymbolicName() );
                         debug( "not idle: " + ref.getBundle().getSymbolicName() );
-                        list.add( ref );
                         break;
                     }
+                    
+                    list.add( ref );
+
                 }
             }
             return list;

Modified: felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DriverAttributes.java
URL: http://svn.apache.org/viewvc/felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DriverAttributes.java?rev=765541&r1=765540&r2=765541&view=diff
==============================================================================
--- felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DriverAttributes.java (original)
+++ felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/DriverAttributes.java Thu Apr 16 09:41:41 2009
@@ -86,7 +86,7 @@
 
         for ( ServiceReference ref : used )
         {
-            if ( Util.isDeviceInstance( ref ) )
+            if ( Util.isDevice( ref ) )
             {
                 return true;
             }
@@ -103,13 +103,11 @@
 
     public void tryUninstall() throws BundleException
     {
-        if ( !isInUse() )
+    	
+        // only install if _we_ loaded the driver
+        if ( !isInUse() && m_dynamic )
         {
-            // only install if _we_ loaded the driver
-            if ( m_dynamic )
-            {
-                m_bundle.uninstall();
-            }
+        	m_bundle.uninstall();
         }
     }
 

Modified: felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/DeviceAnalyzer.java
URL: http://svn.apache.org/viewvc/felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/DeviceAnalyzer.java?rev=765541&r1=765540&r2=765541&view=diff
==============================================================================
--- felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/DeviceAnalyzer.java (original)
+++ felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/DeviceAnalyzer.java Thu Apr 16 09:41:41 2009
@@ -84,6 +84,7 @@
             if ( !String[].class.isInstance( cat ) )
             {
                 m_log.log( LogService.LOG_ERROR, "invalid device: invalid device category: " + Util.showDevice( ref ) );
+                return;
             }
             if ( String[].class.cast( cat ).length == 0 )
             {

Modified: felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/Util.java
URL: http://svn.apache.org/viewvc/felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/Util.java?rev=765541&r1=765540&r2=765541&view=diff
==============================================================================
--- felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/Util.java (original)
+++ felix/trunk/deviceaccess/src/main/java/org/apache/felix/das/util/Util.java Thu Apr 16 09:41:41 2009
@@ -64,7 +64,25 @@
         return buffer.toString();
     }
 
-
+    public static boolean isDevice( ServiceReference ref )
+    {
+        try
+        {
+            Filter device = createFilter( "(|(%s=%s)(%s=%s))", new Object[]
+                { 
+            		Constants.OBJECTCLASS, Device.class.getName(),
+            		org.osgi.service.device.Constants.DEVICE_CATEGORY, "*" 
+            		}
+            );
+            return device.match( ref );
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+        }
+        return false;
+    }
+    
     public static boolean isDeviceInstance( ServiceReference ref )
     {
         try