You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2010/05/18 17:25:32 UTC

svn commit: r945698 - in /felix/trunk/dependencymanager: core/src/main/java/org/apache/felix/dm/resources/ test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ test/src/test/java/org/apache/felix/dm/test/

Author: marrs
Date: Tue May 18 15:25:32 2010
New Revision: 945698

URL: http://svn.apache.org/viewvc?rev=945698&view=rev
Log:
FELIX-2348 Not all resources have a filter, so the code and the test now handle that case correctly.

Modified:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java
    felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java
    felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java?rev=945698&r1=945697&r2=945698&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java Tue May 18 15:25:32 2010
@@ -40,17 +40,19 @@ public class BundleResourceRepository {
 	public synchronized void addHandler(ServiceReference ref, ResourceHandler handler) {
 		String filter = (String) ref.getProperty("filter"); // "(&(repository=a)(path=b)(name=*.xml))"
 		Filter filterObject = null;
-		try {
-			filterObject = FrameworkUtil.createFilter(filter);
-		} 
-		catch (InvalidSyntaxException e) {
-			e.printStackTrace();
-			return;
+		if (filter != null) {
+    		try {
+    			filterObject = FrameworkUtil.createFilter(filter);
+    		} 
+    		catch (InvalidSyntaxException e) {
+    			e.printStackTrace();
+    			return;
+    		}
 		}
 		Enumeration entries = m_bundle.findEntries("/", null, true);
 		while (entries.hasMoreElements()) {
 			EntryResource resource = new EntryResource(m_bundle, (URL) entries.nextElement());
-			if (filterObject.match(resource)) {
+			if (filterObject == null || filterObject.match(resource)) {
                 handler.added(resource);
 			}
 		}
@@ -59,17 +61,19 @@ public class BundleResourceRepository {
 	public synchronized void removeHandler(ServiceReference ref, ResourceHandler handler) {
 		String filter = (String) ref.getProperty("filter"); // "(&(repository=a)(path=b)(name=*.xml))"
 		Filter filterObject = null;
-		try {
-			filterObject = FrameworkUtil.createFilter(filter);
-		}
-		catch (InvalidSyntaxException e) {
-			e.printStackTrace();
-			return;
+		if (filter != null) {
+    		try {
+    			filterObject = FrameworkUtil.createFilter(filter);
+    		}
+    		catch (InvalidSyntaxException e) {
+    			e.printStackTrace();
+    			return;
+    		}
 		}
 		Enumeration entries = m_bundle.findEntries("/", null, true);
         while (entries.hasMoreElements()) {
             EntryResource resource = new EntryResource(m_bundle, (URL) entries.nextElement());
-            if (filterObject.match(resource)) {
+            if (filterObject == null || filterObject.match(resource)) {
                 handler.removed(resource);
             }
         }

Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java?rev=945698&r1=945697&r2=945698&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java Tue May 18 15:25:32 2010
@@ -29,7 +29,6 @@ import junit.framework.Assert;
 import org.apache.felix.dm.annotation.api.Destroy;
 import org.apache.felix.dm.annotation.api.Service;
 import org.apache.felix.dm.annotation.api.dependency.ServiceDependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.resources.ResourceHandler;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
@@ -72,17 +71,19 @@ public class ResourceProvider
      */
     @ServiceDependency(removed = "remove", required=false)
     public void add(Map serviceProperties, ResourceHandler handler)
-    {
+    {        
         String filterString = (String) serviceProperties.get("filter");
-        Filter filter;
-        try
-        {
-            filter = m_context.createFilter(filterString);
-        }
-        catch (InvalidSyntaxException e)
-        {
-            Assert.fail("Could not create filter for resource handler: " + e);
-            return;
+        Filter filter = null;
+        if (filterString != null) {
+            try
+            {
+                filter = m_context.createFilter(filterString);
+            }
+            catch (InvalidSyntaxException e)
+            {
+                Assert.fail("Could not create filter for resource handler: " + e);
+                return;
+            }
         }
         synchronized (m_handlers)
         {
@@ -90,7 +91,7 @@ public class ResourceProvider
         }
         for (int i = 0; i < m_resources.length; i++)
         {
-            if (filter.match(m_resources[i].getProperties()))
+            if (filter == null || filter.match(m_resources[i].getProperties()))
             {
                 handler.added(m_resources[i]);
             }
@@ -115,7 +116,7 @@ public class ResourceProvider
     {
         for (int i = 0; i < m_resources.length; i++)
         {
-            if (filter.match(m_resources[i].getProperties()))
+            if (filter == null || filter.match(m_resources[i].getProperties()))
             {
                 handler.removed(m_resources[i]);
             }

Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java?rev=945698&r1=945697&r2=945698&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java Tue May 18 15:25:32 2010
@@ -120,23 +120,25 @@ public class FELIX2348_ResourceAdapterTe
         
         public void add(ServiceReference ref, ResourceHandler handler) {
             String filterString = (String) ref.getProperty("filter");
-            Filter filter;
-            try {
-                filter = m_context.createFilter(filterString);
-            }
-            catch (InvalidSyntaxException e) {
-                Assert.fail("Could not create filter for resource handler: " + e);
-                return;
+            Filter filter = null;
+            if (filterString != null) {
+                try {
+                    filter = m_context.createFilter(filterString);
+                }
+                catch (InvalidSyntaxException e) {
+                    Assert.fail("Could not create filter for resource handler: " + e);
+                    return;
+                }
             }
             synchronized (m_handlers) {
                 m_handlers.put(handler, filter);
             }
-                for (int i = 0; i < m_resources.length; i++) {
-                    if (filter.match(m_resources[i].getProperties())) {
-                        handler.added(m_resources[i]);
-                    }
+            for (int i = 0; i < m_resources.length; i++) {
+                if (filter == null || filter.match(m_resources[i].getProperties())) {
+                    handler.added(m_resources[i]);
                 }
             }
+        }
 
         public void remove(ServiceReference ref, ResourceHandler handler) {
             Filter filter;
@@ -148,7 +150,7 @@ public class FELIX2348_ResourceAdapterTe
 
         private void removeResources(ResourceHandler handler, Filter filter) {
                 for (int i = 0; i < m_resources.length; i++) {
-                    if (filter.match(m_resources[i].getProperties())) {
+                    if (filter == null || filter.match(m_resources[i].getProperties())) {
                         handler.removed(m_resources[i]);
                     }
                 }