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/07/02 19:27:21 UTC

svn commit: r960066 - in /felix/trunk/dependencymanager: core/src/main/java/org/apache/felix/dm/ core/src/main/java/org/apache/felix/dm/dependencies/ core/src/main/java/org/apache/felix/dm/impl/ core/src/main/java/org/apache/felix/dm/impl/dependencies/...

Author: marrs
Date: Fri Jul  2 17:27:20 2010
New Revision: 960066

URL: http://svn.apache.org/viewvc?rev=960066&view=rev
Log:
Refactored resource dependencies to use URLs instead of the Resource interface we used previously. Adapted all tests to reflect that.

Added:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceUtil.java
Removed:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/BundleResourceRepository.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/Resource.java
    felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/StaticResource.java
Modified:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/ResourceDependency.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ResourceAdapterServiceImpl.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyActivation.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceHandler.java
    felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceConsumer.java
    felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceProvider.java
    felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ServiceProvider.java
    felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/FELIX2348_ResourceAdapterTest.java
    felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/ResourceDependencyTest.java
    felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/SharingDependenciesWithMultipleServicesTest.java

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/DependencyManager.java Fri Jul  2 17:27:20 2010
@@ -41,7 +41,6 @@ import org.apache.felix.dm.impl.dependen
 import org.apache.felix.dm.impl.dependencies.ServiceDependencyImpl;
 import org.apache.felix.dm.impl.dependencies.TemporalServiceDependencyImpl;
 import org.apache.felix.dm.impl.metatype.PropertyMetaDataImpl;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.service.Service;
 import org.osgi.framework.BundleContext;
 

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/ResourceDependency.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/ResourceDependency.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/ResourceDependency.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/ResourceDependency.java Fri Jul  2 17:27:20 2010
@@ -18,7 +18,8 @@
  */
 package org.apache.felix.dm.dependencies;
 
-import org.apache.felix.dm.resources.Resource;
+import java.net.URL;
+
 import org.apache.felix.dm.resources.ResourceHandler;
 
 public interface ResourceDependency extends Dependency, ResourceHandler {
@@ -94,7 +95,7 @@ public interface ResourceDependency exte
      */
      public ResourceDependency setAutoConfig(String instanceName);
     
-     public ResourceDependency setResource(Resource resource);
+     public ResourceDependency setResource(URL resource);
 	
      public ResourceDependency setRequired(boolean required);
 

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/AbstractDecorator.java Fri Jul  2 17:27:20 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.felix.dm.impl;
 
+import java.net.URL;
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -26,7 +27,6 @@ import java.util.Map;
 
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.dependencies.Dependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.service.Service;
 import org.apache.felix.dm.service.ServiceStateListener;
 import org.osgi.framework.Bundle;
@@ -173,13 +173,13 @@ public abstract class AbstractDecorator 
     }
 
     // callbacks for resources
-    public void added(Resource resource) {
+    public void added(URL resource) {
         Service newService = createService(new Object[] { resource });
         m_services.put(resource, newService);
         m_manager.add(newService);
     }
 
-    public void removed(Resource resource) {
+    public void removed(URL resource) {
         Service newService = (Service) m_services.remove(resource);
         if (newService == null) {
             System.out.println("Service should not be null here, dumping stack.");

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ResourceAdapterServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ResourceAdapterServiceImpl.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ResourceAdapterServiceImpl.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ResourceAdapterServiceImpl.java Fri Jul  2 17:27:20 2010
@@ -18,13 +18,13 @@
  */
 package org.apache.felix.dm.impl;
 
+import java.net.URL;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Properties;
 
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.dm.dependencies.Dependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.service.Service;
 import org.apache.felix.dm.service.ServiceStateListener;
 
@@ -61,7 +61,7 @@ public class ResourceAdapterServiceImpl 
         }
 
         public Service createService(Object[] properties) {
-            Resource resource = (Resource) properties[0]; 
+            URL resource = (URL) properties[0]; 
             Properties props = new Properties();
             if (m_serviceProperties != null) {
                 Enumeration e = m_serviceProperties.keys();

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyActivation.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyActivation.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyActivation.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyActivation.java Fri Jul  2 17:27:20 2010
@@ -1,7 +1,6 @@
 package org.apache.felix.dm.impl.dependencies;
 
-public interface DependencyActivation
-{
+public interface DependencyActivation {
   public void start(DependencyService service);
   public void stop(DependencyService service);
 }

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java Fri Jul  2 17:27:20 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.felix.dm.impl.dependencies;
 
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.List;
@@ -27,7 +28,6 @@ import org.apache.felix.dm.dependencies.
 import org.apache.felix.dm.dependencies.ResourceDependency;
 import org.apache.felix.dm.impl.Logger;
 import org.apache.felix.dm.management.ServiceComponentDependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.resources.ResourceHandler;
 import org.apache.felix.dm.service.Service;
 import org.osgi.framework.BundleContext;
@@ -46,10 +46,10 @@ public class ResourceDependencyImpl exte
     private String m_autoConfigInstance;
     protected List m_services = new ArrayList();
 	private String m_resourceFilter;
-	private Resource m_trackedResource;
+	private URL m_trackedResource;
     private boolean m_isStarted;
     private List m_resources = new ArrayList();
-    private Resource m_resourceInstance;
+    private URL m_resourceInstance;
     private boolean m_propagate;
 	
     public ResourceDependencyImpl(BundleContext context, Logger logger) {
@@ -93,7 +93,7 @@ public class ResourceDependencyImpl exte
 	        Properties props = null;
 	        if (m_resourceFilter != null) {
 	            props = new Properties();
-	            props.setProperty(Resource.FILTER, m_resourceFilter);
+	            props.setProperty(ResourceHandler.FILTER, m_resourceFilter);
 	        }
 	        m_registration = m_context.registerService(ResourceHandler.class.getName(), this, props);
 	    }
@@ -114,7 +114,7 @@ public class ResourceDependencyImpl exte
 	    }
 	}
 
-	public void added(Resource resource) {
+	public void added(URL resource) {
 	    if (m_trackedResource == null || m_trackedResource.equals(resource)) {
     		long counter;
     		Object[] services;
@@ -139,7 +139,7 @@ public class ResourceDependencyImpl exte
 	    }
 	}
 
-	public void changed(Resource resource) {
+	public void changed(URL resource) {
         if (m_trackedResource == null || m_trackedResource.equals(resource)) {
             Object[] services;
             synchronized (this) {
@@ -152,7 +152,7 @@ public class ResourceDependencyImpl exte
         }
 	}
 
-	public void removed(Resource resource) {
+	public void removed(URL resource) {
         if (m_trackedResource == null || m_trackedResource.equals(resource)) {
     		long counter;
     		Object[] services;
@@ -177,22 +177,22 @@ public class ResourceDependencyImpl exte
         }
 	}
 	
-    public void invokeAdded(DependencyService ds, Resource serviceInstance) {
+    public void invokeAdded(DependencyService ds, URL serviceInstance) {
         invoke(ds, serviceInstance, m_callbackAdded);
     }
 
-    public void invokeChanged(DependencyService ds, Resource serviceInstance) {
+    public void invokeChanged(DependencyService ds, URL serviceInstance) {
         invoke(ds, serviceInstance, m_callbackChanged);
     }
 
-    public void invokeRemoved(DependencyService ds, Resource serviceInstance) {
+    public void invokeRemoved(DependencyService ds, URL serviceInstance) {
         invoke(ds, serviceInstance, m_callbackRemoved);
     }
     
-    private void invoke(DependencyService ds, Resource serviceInstance, String name) {
+    private void invoke(DependencyService ds, URL serviceInstance, String name) {
         if (name != null) {
             ds.invokeCallbackMethod(getCallbackInstances(ds), name,
-                new Class[][] {{ Service.class, Resource.class }, { Service.class, Object.class }, { Service.class },  { Resource.class }, { Object.class }, {}},
+                new Class[][] {{ Service.class, URL.class }, { Service.class, Object.class }, { Service.class },  { URL.class }, { Object.class }, {}},
                 new Object[][] {{ ds.getServiceInterface(), serviceInstance }, { ds.getServiceInterface(), serviceInstance }, { ds.getServiceInterface() }, { serviceInstance }, { serviceInstance }, {}}
             );
         }
@@ -368,7 +368,7 @@ public class ResourceDependencyImpl exte
         }
     }
 
-	public ResourceDependency setResource(Resource resource) {
+	public ResourceDependency setResource(URL resource) {
 		m_trackedResource = resource;
 		return this;
 	}
@@ -388,13 +388,13 @@ public class ResourceDependencyImpl exte
         return m_autoConfig;
     }
     
-    public Resource getResource() {
+    public URL getResource() {
     	return lookupResource();
     }
 
-    private Resource lookupResource() {
+    private URL lookupResource() {
         try {
-            return (Resource) m_resources.get(0);
+            return (URL) m_resources.get(0);
         }
         catch (IndexOutOfBoundsException e) {
             return null;
@@ -410,7 +410,7 @@ public class ResourceDependencyImpl exte
     }
 
     public Class getAutoConfigType() {
-        return Resource.class;
+        return URL.class;
     }
 
     public void invokeAdded(DependencyService service) {
@@ -431,12 +431,13 @@ public class ResourceDependencyImpl exte
     }
     
     public Dictionary getProperties() {
-        Resource resource = lookupResource();
+        URL resource = lookupResource();
         if (resource != null) {
             Properties props = new Properties();
-            props.put(Resource.NAME, resource.getName());
-            props.put(Resource.PATH, resource.getPath());
-            props.put(Resource.REPOSITORY, resource.getRepository());
+            props.setProperty(ResourceHandler.HOST, resource.getHost());
+            props.setProperty(ResourceHandler.PATH, resource.getPath());
+            props.setProperty(ResourceHandler.PROTOCOL, resource.getProtocol());
+            props.setProperty(ResourceHandler.PORT, Integer.toString(resource.getPort()));
             return props;
         }
         else {
@@ -459,7 +460,7 @@ public class ResourceDependencyImpl exte
             sb.append(m_resourceFilter);
         }
         if (m_trackedResource != null) {
-            sb.append(m_trackedResource.getID());
+            sb.append(m_trackedResource.toString());
         }
         return sb.toString();
     }

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceHandler.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceHandler.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceHandler.java Fri Jul  2 17:27:20 2010
@@ -18,14 +18,28 @@
  */
 package org.apache.felix.dm.resources;
 
+import java.net.URL;
+
 /** 
  * Service interface for anybody wanting to be notified of changes to resources. 
  */
 public interface ResourceHandler {
+    /** Name of the property that's used to describe the filter condition for a resource. */
+    public static final String FILTER = "filter";
+    
+    /** The host part of the URL. */
+    public static final String HOST = "host";
+    /** The path part of the URL. */
+    public static final String PATH = "path";
+    /** The protocol part of the URL. */
+    public static final String PROTOCOL = "protocol";
+    /** The port part of the URL. */
+    public static final String PORT = "port";
+
     /** Invoked whenever a new resource is added. */
-	public void added(Resource resource);
+	public void added(URL resource);
 	/** Invoked whenever an existing resource changes. */
-	public void changed(Resource resource);
+	public void changed(URL resource);
 	/** Invoked whenever an existing resource is removed. */
-	public void removed(Resource resource);
+	public void removed(URL resource);
 }

Added: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceUtil.java?rev=960066&view=auto
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceUtil.java (added)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/resources/ResourceUtil.java Fri Jul  2 17:27:20 2010
@@ -0,0 +1,16 @@
+package org.apache.felix.dm.resources;
+
+import java.net.URL;
+import java.util.Dictionary;
+import java.util.Properties;
+
+public class ResourceUtil {
+    public static Dictionary createProperties(URL url) {
+        Properties props = new Properties();
+        props.setProperty(ResourceHandler.PROTOCOL, url.getProtocol());
+        props.setProperty(ResourceHandler.HOST, url.getHost());
+        props.setProperty(ResourceHandler.PORT, Integer.toString(url.getPort()));
+        props.setProperty(ResourceHandler.PATH, url.getPath());
+        return props;
+    }
+}

Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceConsumer.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceConsumer.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceConsumer.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ResourceConsumer.java Fri Jul  2 17:27:20 2010
@@ -18,6 +18,8 @@
 */
 package org.apache.felix.dm.test.bundle.annotation.resource;
 
+import java.net.URL;
+
 import junit.framework.Assert;
 
 import org.apache.felix.dm.annotation.api.ResourceDependency;
@@ -25,7 +27,6 @@ import org.apache.felix.dm.annotation.ap
 import org.apache.felix.dm.annotation.api.ServiceDependency;
 import org.apache.felix.dm.annotation.api.Start;
 import org.apache.felix.dm.annotation.api.Stop;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.test.bundle.annotation.sequencer.Sequencer;
 
 /**
@@ -45,30 +46,28 @@ public class ResourceConsumer
         System.out.println("ResourceConsumer.start: sequencer=" + m_sequencer);
     }
     
-    @ResourceDependency(required = false, filter = "(&(path=/test)(name=*.txt)(repository=TestRepository))")
-    public void add(Resource resource)
+    @ResourceDependency(required = false, filter = "(&(path=/path/to/*.txt)(host=localhost))")
+    public void add(URL resource)
     {
-        System.out.println("ResourceConsumer.add: resource=" + resource.getName() + ", m_sequencer=" + m_sequencer);
-        if (match(resource, "test1.txt", "/test", "TestRepository"))
+        System.out.println("ResourceConsumer.add: resource=" + resource + ", m_sequencer=" + m_sequencer);
+        if (match(resource, "file://localhost/path/to/test1.txt"))
         {
             m_resourcesSeen ++;
             return;
         }
 
-        if (match(resource, "test2.txt", "/test", "TestRepository"))
+        if (match(resource, "file://localhost/path/to/test2.txt"))
         {
             m_resourcesSeen ++;
             return;
         }
 
-        Assert.fail("Got unexpected resource: " + resource.getName() + "/" + resource.getPath()
-            + "/" + resource.getRepository());
+        Assert.fail("Got unexpected resource: " + resource);
     }
 
-    private boolean match(Resource resource, String name, String path, String repo)
+    private boolean match(URL resource, String url)
     {
-        return name.equals(resource.getName()) && path.equals(resource.getPath())
-            && repo.equals(resource.getRepository());
+        return url.equals(resource.toString());
     }
     
     @Stop

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=960066&r1=960065&r2=960066&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 Fri Jul  2 17:27:20 2010
@@ -18,8 +18,7 @@
 */
 package org.apache.felix.dm.test.bundle.annotation.resource;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -30,6 +29,7 @@ import org.apache.felix.dm.annotation.ap
 import org.apache.felix.dm.annotation.api.Service;
 import org.apache.felix.dm.annotation.api.ServiceDependency;
 import org.apache.felix.dm.resources.ResourceHandler;
+import org.apache.felix.dm.resources.ResourceUtil;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.InvalidSyntaxException;
@@ -42,28 +42,16 @@ public class ResourceProvider
 {
     private volatile BundleContext m_context;
     private final Map m_handlers = new HashMap();
-    private StaticResource[] m_resources = {
-            new StaticResource("test1.txt", "/test", "TestRepository")
-            {
-                public InputStream openStream() throws IOException
-                {
-                    return null;
-                };
-            }, new StaticResource("test2.txt", "/test", "TestRepository")
-            {
-                public InputStream openStream() throws IOException
-                {
-                    return null;
-                };
-            }, new StaticResource("README.doc", "/", "TestRepository")
-            {
-                public InputStream openStream() throws IOException
-                {
-                    Assert.fail("resource should not have matched the filter");
-                    return null;
-                };
-            } };
-
+    private URL[] m_resources;
+    
+    public ResourceProvider() throws Exception {
+        m_resources = new URL[] {
+            new URL("file://localhost/path/to/test1.txt"),
+            new URL("file://localhost/path/to/test2.txt"),
+            new URL("file://localhost/path/to/README.doc")
+            };
+    }
+    
     /**
      * Handles a new Resource consumer
      * @param serviceProperties
@@ -91,7 +79,7 @@ public class ResourceProvider
         }
         for (int i = 0; i < m_resources.length; i++)
         {
-            if (filter == null || filter.match(m_resources[i].getProperties()))
+            if (filter == null || filter.match(ResourceUtil.createProperties(m_resources[i])))
             {
                 handler.added(m_resources[i]);
             }
@@ -116,7 +104,7 @@ public class ResourceProvider
     {
         for (int i = 0; i < m_resources.length; i++)
         {
-            if (filter == null || filter.match(m_resources[i].getProperties()))
+            if (filter == null || filter.match(ResourceUtil.createProperties(m_resources[i])))
             {
                 handler.removed(m_resources[i]);
             }

Modified: felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ServiceProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ServiceProvider.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ServiceProvider.java (original)
+++ felix/trunk/dependencymanager/test/src/main/java/org/apache/felix/dm/test/bundle/annotation/resource/ServiceProvider.java Fri Jul  2 17:27:20 2010
@@ -18,25 +18,26 @@
 */
 package org.apache.felix.dm.test.bundle.annotation.resource;
 
+import java.net.URL;
+
 import junit.framework.Assert;
 
 import org.apache.felix.dm.annotation.api.Property;
 import org.apache.felix.dm.annotation.api.ResourceAdapterService;
 import org.apache.felix.dm.annotation.api.ServiceDependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.test.bundle.annotation.sequencer.Sequencer;
 
 /**
  * Our ServiceInterface provider, which service is activated by a ResourceAdapter.
  */
 @ResourceAdapterService(
-    filter = "(&(path=/test)(name=test1.txt)(repository=TestRepository))", 
+    filter = "(&(path=/path/to/test1.txt)(host=localhost))", 
     properties = {@Property(name="foo", value="bar")},
     propagate = true)
 public class ServiceProvider implements ServiceInterface
 {
     // Injected by reflection
-    Resource m_resource;
+    URL m_resource;
         
     @ServiceDependency(filter="(test=adapter)")
     Sequencer m_sequencer;
@@ -44,9 +45,7 @@ public class ServiceProvider implements 
     public void run()
     {
         Assert.assertNotNull("Resource has not been injected in the adapter", m_resource);
-        Assert.assertEquals("ServiceProvider did not get expected resource", "test1.txt", m_resource.getName());
-        Assert.assertEquals("ServiceProvider did not get expected resource", "/test", m_resource.getPath());
-        Assert.assertEquals("ServiceProvider did not get expected resource", "TestRepository", m_resource.getRepository());
+        Assert.assertEquals("ServiceProvider did not get expected resource", "file://localhost/path/to/test1.txt", m_resource.toString());
         m_sequencer.step(2);
     }
 }

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=960066&r1=960065&r2=960066&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 Fri Jul  2 17:27:20 2010
@@ -22,21 +22,20 @@ import static org.ops4j.pax.exam.CoreOpt
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Dictionary;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Map.Entry;
 
 import junit.framework.Assert;
 
 import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.resources.ResourceHandler;
+import org.apache.felix.dm.resources.ResourceUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -60,18 +59,18 @@ public class FELIX2348_ResourceAdapterTe
     }    
 
     @Test
-    public void testBasicResourceAdapter(BundleContext context) {
+    public void testBasicResourceAdapter(BundleContext context) throws Exception {
         DependencyManager m = new DependencyManager(context);
         // helper class that ensures certain steps get executed in sequence
         Ensure e = new Ensure();
-        m.add(m.createResourceAdapterService("(&(path=/test)(name=*.txt)(repository=TestRepository))", false, null, "changed")
+        m.add(m.createResourceAdapterService("(&(path=/path/to/*.txt)(host=localhost))", false, null, "changed")
               .setImplementation(new ResourceAdapter(e)));
         m.add(m.createService().setImplementation(new ResourceProvider(e)).add(m.createServiceDependency().setService(ResourceHandler.class).setCallbacks("add", "remove")));
         e.waitForStep(3, 5000);
      }
     
     static class ResourceAdapter {
-        protected Resource m_resource; // injected by reflection.
+        protected URL m_resource; // injected by reflection.
         private Ensure m_ensure;
         
         ResourceAdapter(Ensure e) {
@@ -83,19 +82,14 @@ public class FELIX2348_ResourceAdapterTe
             Assert.assertNotNull("resource not injected", m_resource);
             m_ensure.step(2);
             try {
-                InputStream in= m_resource.openStream();
-                ByteArrayOutputStream out = new ByteArrayOutputStream();
-                int c;
-                while ((c = in.read()) != -1) {
-                    out.write(c);
-                }
-                String msg = new String(out.toByteArray(), "UTF8");
-                Assert.assertEquals("resource", msg);
-            } catch (Throwable t) {
-                t.printStackTrace();
-                Assert.fail();
+                InputStream in = m_resource.openStream();
+            } 
+            catch (FileNotFoundException e) {
+                m_ensure.step(3);
+            }
+            catch (IOException e) {
+                Assert.fail("We should not have gotten this exception.");
             }
-            m_ensure.step(3);
         }
     }
     
@@ -103,16 +97,13 @@ public class FELIX2348_ResourceAdapterTe
         private volatile BundleContext m_context;
         private final Ensure m_ensure;
         private final Map m_handlers = new HashMap();
-        private StaticResource[] m_resources = {
-            new StaticResource("test1.txt", "/test", "TestRepository") {
-                public InputStream openStream() throws IOException {
-                    return new ByteArrayInputStream("resource".getBytes("UTF8"));
-                };
-            }
-        };
+        private URL[] m_resources;
 
-        public ResourceProvider(Ensure ensure) {
+        public ResourceProvider(Ensure ensure) throws MalformedURLException {
             m_ensure = ensure;
+            m_resources = new URL[] {
+                new URL("file://localhost/path/to/file1.txt")
+            };
         }
         
         public void add(ServiceReference ref, ResourceHandler handler) {
@@ -131,7 +122,7 @@ public class FELIX2348_ResourceAdapterTe
                 m_handlers.put(handler, filter);
             }
             for (int i = 0; i < m_resources.length; i++) {
-                if (filter == null || filter.match(m_resources[i].getProperties())) {
+                if (filter == null || filter.match(ResourceUtil.createProperties(m_resources[i]))) {
                     handler.added(m_resources[i]);
                 }
             }
@@ -147,7 +138,7 @@ public class FELIX2348_ResourceAdapterTe
 
         private void removeResources(ResourceHandler handler, Filter filter) {
                 for (int i = 0; i < m_resources.length; i++) {
-                    if (filter == null || filter.match(m_resources[i].getProperties())) {
+                    if (filter == null || filter.match(ResourceUtil.createProperties(m_resources[i]))) {
                         handler.removed(m_resources[i]);
                     }
                 }
@@ -165,47 +156,4 @@ public class FELIX2348_ResourceAdapterTe
             System.out.println("DESTROY..." + m_handlers.size());
         }
     }
-    
-    static class StaticResource implements Resource {
-        private String m_id;
-        private String m_name;
-        private String m_path;
-        private String m_repository;
-
-        public StaticResource(String name, String path, String repository) {
-            m_id = repository + ":" + path + "/" + name;
-            m_name = name;
-            m_path = path;
-            m_repository = repository;
-        }
-        
-        public String getID() {
-            return m_id;
-        }
-
-        public String getName() {
-            return m_name;
-        }
-
-        public String getPath() {
-            return m_path;
-        }
-
-        public String getRepository() {
-            return m_repository;
-        }
-        
-        public Dictionary getProperties() {
-            return new Properties() {{
-                put(Resource.ID, getID());
-                put(Resource.NAME, getName());
-                put(Resource.PATH, getPath());
-                put(Resource.REPOSITORY, getRepository());
-            }};
-        }
-
-        public InputStream openStream() throws IOException {
-            return null;
-        }
-    }
 }

Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/ResourceDependencyTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/ResourceDependencyTest.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/ResourceDependencyTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/ResourceDependencyTest.java Fri Jul  2 17:27:20 2010
@@ -22,22 +22,20 @@ import static org.ops4j.pax.exam.CoreOpt
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import java.util.Dictionary;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Map.Entry;
 
 import junit.framework.Assert;
 
 import org.apache.felix.dm.DependencyManager;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.resources.ResourceHandler;
+import org.apache.felix.dm.resources.ResourceUtil;
 import org.apache.felix.dm.service.Service;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -67,16 +65,16 @@ public class ResourceDependencyTest exte
         // helper class that ensures certain steps get executed in sequence
         Ensure e = new Ensure();
         // create a service provider and consumer
-        ResourceConsumer c = new ResourceConsumer();
+        ResourceConsumer c = new ResourceConsumer(e);
         Service consumer = m.createService()
             .setImplementation(c)
             .add(m.createResourceDependency()
-                .setFilter("(&(path=/test)(name=*.txt)(repository=TestRepository))")
+                .setFilter("(&(path=/path/to/*.txt)(host=localhost))")
                 .setCallbacks("add", "remove"));
         Service dynamicProxyConsumer = m.createService()
             .setFactory(new ResourceConsumerFactory(e), "create")
             .add(m.createResourceDependency()
-                    .setFilter("(name=*.doc)")
+                    .setFilter("(path=*.doc)")
                     .setCallbacks("add", null)); 
         Service resourceProvider = m.createService()
             .setImplementation(new ResourceProvider(e))
@@ -110,16 +108,17 @@ public class ResourceDependencyTest exte
     
     static class ResourceConsumer {
         private volatile int m_counter;
-        public void add(Resource resource) {
+        private Ensure m_ensure;
+        
+        public ResourceConsumer(Ensure ensure) {
+            m_ensure = ensure;
+        }
+        
+        public void add(URL resource) {
             m_counter++;
-            try {
-                resource.openStream();
-            }
-            catch (IOException e) {
-                e.printStackTrace();
-            }
+            m_ensure.step();
         }
-        public void remove(Resource resource) {
+        public void remove(URL resource) {
             m_counter--;
         }
         public void ensure() {
@@ -131,29 +130,20 @@ public class ResourceDependencyTest exte
         private volatile BundleContext m_context;
         private final Ensure m_ensure;
         private final Map m_handlers = new HashMap();
-        private StaticResource[] m_resources = {
-            new StaticResource("test1.txt", "/test", "TestRepository") {
-                public InputStream openStream() throws IOException {
-                    m_ensure.step(1);
-                    return null;
-                };
-            },
-            new StaticResource("test2.txt", "/test", "TestRepository") {
-                public InputStream openStream() throws IOException {
-                    m_ensure.step(2);
-                    return null;
-                };
-            },
-            new StaticResource("README.doc", "/", "TestRepository") {
-                public InputStream openStream() throws IOException {
-                    Assert.fail("resource should not have matched the filter");
-                    return null;
-                };
-            }
-        };
-
+        private URL[] m_resources;
+        
         public ResourceProvider(Ensure ensure) {
             m_ensure = ensure;
+            try {
+                m_resources = new URL[] {
+                    new URL("file://localhost/path/to/file1.txt"),
+                    new URL("file://localhost/path/to/file2.txt"),
+                    new URL("file://localhost/path/to/file3.doc")
+                };
+            }
+            catch (MalformedURLException e) {
+                throw new IllegalStateException(e);
+            }
         }
         
         public void add(ServiceReference ref, ResourceHandler handler) {
@@ -170,7 +160,7 @@ public class ResourceDependencyTest exte
                 m_handlers.put(handler, filter);
             }
                 for (int i = 0; i < m_resources.length; i++) {
-                    if (filter.match(m_resources[i].getProperties())) {
+                    if (filter.match(ResourceUtil.createProperties(m_resources[i]))) {
                         handler.added(m_resources[i]);
                     }
                 }
@@ -186,7 +176,7 @@ public class ResourceDependencyTest exte
 
         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.match(ResourceUtil.createProperties(m_resources[i]))) {
                         handler.removed(m_resources[i]);
                     }
                 }
@@ -205,49 +195,6 @@ public class ResourceDependencyTest exte
         }
     }
     
-    static class StaticResource implements Resource {
-        private String m_id;
-        private String m_name;
-        private String m_path;
-        private String m_repository;
-
-        public StaticResource(String name, String path, String repository) {
-            m_id = repository + ":" + path + "/" + name;
-            m_name = name;
-            m_path = path;
-            m_repository = repository;
-        }
-        
-        public String getID() {
-            return m_id;
-        }
-
-        public String getName() {
-            return m_name;
-        }
-
-        public String getPath() {
-            return m_path;
-        }
-
-        public String getRepository() {
-            return m_repository;
-        }
-        
-        public Dictionary getProperties() {
-            return new Properties() {{
-                put(Resource.ID, getID());
-                put(Resource.NAME, getName());
-                put(Resource.PATH, getPath());
-                put(Resource.REPOSITORY, getRepository());
-            }};
-        }
-
-        public InputStream openStream() throws IOException {
-            return null;
-        }
-    }
-    
     static class ResourceConsumerFactory {
         private final Ensure m_ensure;
         public ResourceConsumerFactory(Ensure ensure) {
@@ -255,7 +202,7 @@ public class ResourceDependencyTest exte
         }
         public Object create() {
             System.out.println("create");
-            ResourceConsumer resourceConsumer = new ResourceConsumer();
+            ResourceConsumer resourceConsumer = new ResourceConsumer(m_ensure);
             // create a dynamic proxy for the ResourceProvider
             return Proxy.newProxyInstance(resourceConsumer.getClass().getClassLoader(), resourceConsumer.getClass().getInterfaces(), new DynamicProxyHandler(resourceConsumer, m_ensure));
         }
@@ -270,7 +217,7 @@ public class ResourceDependencyTest exte
             m_ensure = ensure;
         }
 
-        public void add(Resource resource) {
+        public void add(URL resource) {
             m_ensure.step(4);
             System.out.println("Add resource: " + resource);
         }

Modified: felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/SharingDependenciesWithMultipleServicesTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/SharingDependenciesWithMultipleServicesTest.java?rev=960066&r1=960065&r2=960066&view=diff
==============================================================================
--- felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/SharingDependenciesWithMultipleServicesTest.java (original)
+++ felix/trunk/dependencymanager/test/src/test/java/org/apache/felix/dm/test/SharingDependenciesWithMultipleServicesTest.java Fri Jul  2 17:27:20 2010
@@ -22,8 +22,7 @@ import static org.ops4j.pax.exam.CoreOpt
 import static org.ops4j.pax.exam.CoreOptions.options;
 import static org.ops4j.pax.exam.CoreOptions.provision;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.net.URL;
 import java.util.Dictionary;
 import java.util.Properties;
 
@@ -32,8 +31,8 @@ import org.apache.felix.dm.dependencies.
 import org.apache.felix.dm.dependencies.ConfigurationDependency;
 import org.apache.felix.dm.dependencies.ResourceDependency;
 import org.apache.felix.dm.dependencies.ServiceDependency;
-import org.apache.felix.dm.resources.Resource;
 import org.apache.felix.dm.resources.ResourceHandler;
+import org.apache.felix.dm.resources.ResourceUtil;
 import org.apache.felix.dm.service.Service;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -132,12 +131,12 @@ public class SharingDependenciesWithMult
     }
     
     @Test
-    public void testShareResourceDependencyWithMultipleServices(BundleContext context) {
+    public void testShareResourceDependencyWithMultipleServices(BundleContext context) throws Exception {
         DependencyManager m = new DependencyManager(context);
         // helper class that ensures certain steps get executed in sequence
         Ensure e = new Ensure();
         // create a service provider and consumer
-        ResourceDependency dependency = m.createResourceDependency().setFilter("(" + Resource.REPOSITORY + "=TestRepository)").setRequired(true);
+        ResourceDependency dependency = m.createResourceDependency().setFilter("(" + ResourceHandler.HOST + "=localhost)").setRequired(true);
         Service consumer1 = m.createService().setImplementation(new ResourceConsumer(e, 1)).add(dependency);
         Service consumer2 = m.createService().setImplementation(new ResourceConsumer(e, 2)).add(dependency);
         Service resourceProvider = m.createService().setImplementation(new ResourceProvider()).add(m.createServiceDependency().setService(ResourceHandler.class).setCallbacks("add", "remove"));;
@@ -250,17 +249,22 @@ public class SharingDependenciesWithMult
     
     static class ResourceProvider {
         private volatile BundleContext m_context;
-        private StaticResource[] m_resources = {
-            new StaticResource("test1.txt", "/test", "TestRepository"),
-            new StaticResource("test2.txt", "/test", "TestRepository")
-        };
+        private URL[] m_resources;
+        
+        public ResourceProvider() throws Exception {
+            m_resources = new URL[] {
+                new URL("file://localhost/path/to/test1.txt"),
+                new URL("file://localhost/path/to/test2.txt")        
+                };
+            
+        }
 
         public void add(ServiceReference ref, ResourceHandler handler) {
             String filterString = (String) ref.getProperty("filter");
             try {
                 Filter filter = m_context.createFilter(filterString);
                 for (int i = 0; i < m_resources.length; i++) {
-                    if (filter.match(m_resources[i].getProperties())) {
+                    if (filter.match(ResourceUtil.createProperties(m_resources[i]))) {
                         handler.added(m_resources[i]);
                     }
                 }
@@ -275,7 +279,7 @@ public class SharingDependenciesWithMult
             try {
                 Filter filter = m_context.createFilter(filterString);
                 for (int i = 0; i < m_resources.length; i++) {
-                    if (filter.match(m_resources[i].getProperties())) {
+                    if (filter.match(ResourceUtil.createProperties(m_resources[i]))) {
                         handler.removed(m_resources[i]);
                     }
                 }
@@ -285,46 +289,4 @@ public class SharingDependenciesWithMult
             }
         }
     }
-    
-    static class StaticResource implements Resource {
-        private String m_id;
-        private String m_name;
-        private String m_path;
-        private String m_repository;
-
-        public StaticResource(String name, String path, String repository) {
-            m_id = repository + ":" + path + "/" + name;
-            m_name = name;
-            m_path = path;
-            m_repository = repository;
-        }
-        
-        public String getID() {
-            return m_id;
-        }
-
-        public String getName() {
-            return m_name;
-        }
-
-        public String getPath() {
-            return m_path;
-        }
-
-        public String getRepository() {
-            return m_repository;
-        }
-        
-        public Dictionary getProperties() {
-            return new Properties() {{
-                put(Resource.NAME, getName());
-                put(Resource.PATH, getPath());
-                put(Resource.REPOSITORY, getRepository());
-            }};
-        }
-
-        public InputStream openStream() throws IOException {
-            return null;
-        }
-    }
 }