Author: marrs Date: Thu Dec 10 09:48:17 2009 New Revision: 889163 URL: http://svn.apache.org/viewvc?rev=889163&view=rev Log: added generic support for propagation of a dependency's properties to a service, implemented for configuration and resource dependencies
Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/Dependency.java felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.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/impl/dependencies/ServiceDependencyImpl.java Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/Dependency.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/Dependency.java?rev=889163&r1=889162&r2=889163&view=diff ============================================================================== --- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/Dependency.java (original) +++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/dependencies/Dependency.java Thu Dec 10 09:48:17 2009 @@ -18,6 +18,8 @@ */ package org.apache.felix.dm.dependencies; +import java.util.Dictionary; + import org.apache.felix.dm.impl.dependencies.DependencyService; /** @@ -104,4 +106,7 @@ * @param service */ public void invokeRemoved(DependencyService service); + + public boolean isPropagated(); + public Dictionary getProperties(); } Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java?rev=889163&r1=889162&r2=889163&view=diff ============================================================================== --- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java (original) +++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java Thu Dec 10 09:48:17 2009 @@ -781,12 +781,9 @@ addTo(properties, m_serviceProperties); for (int i = 0; i < m_dependencies.size(); i++) { Dependency d = (Dependency) m_dependencies.get(i); - if (d instanceof ConfigurationDependencyImpl) { - ConfigurationDependencyImpl cd = (ConfigurationDependencyImpl) d; - if (cd.isPropagated()) { - Dictionary dict = cd.getConfiguration(); - addTo(properties, dict); - } + if (d.isPropagated()) { + Dictionary dict = d.getProperties(); + addTo(properties, dict); } } if (properties.size() == 0) { Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java?rev=889163&r1=889162&r2=889163&view=diff ============================================================================== --- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java (original) +++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java Thu Dec 10 09:48:17 2009 @@ -389,4 +389,14 @@ invokeRemoved(service, m_bundleInstance); m_bundleInstance = null; } + + public Dictionary getProperties() { + // TODO Auto-generated method stub + return null; + } + + public boolean isPropagated() { + // TODO Auto-generated method stub + return false; + } } Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java?rev=889163&r1=889162&r2=889163&view=diff ============================================================================== --- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java (original) +++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java Thu Dec 10 09:48:17 2009 @@ -298,4 +298,8 @@ // TODO Auto-generated method stub return false; } + + public Dictionary getProperties() { + return getConfiguration(); + } } 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=889163&r1=889162&r2=889163&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 Thu Dec 10 09:48:17 2009 @@ -22,6 +22,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; +import java.util.Dictionary; import java.util.List; import java.util.Properties; @@ -47,11 +48,11 @@ protected List m_services = new ArrayList(); private boolean m_isRequired; private String m_resourceFilter; -// private Resource m_resource; private Resource m_trackedResource; private boolean m_isStarted; private List m_resources = new ArrayList(); private Resource m_resourceInstance; + private boolean m_propagate; public ResourceDependencyImpl(BundleContext context, Logger logger) { m_context = context; @@ -414,4 +415,28 @@ invokeRemoved(service, m_resourceInstance); m_resourceInstance = null; } + + public ResourceDependency setPropagate(boolean propagate) { + ensureNotActive(); + m_propagate = propagate; + return this; + } + + public Dictionary getProperties() { + Resource 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()); + return props; + } + else { + throw new IllegalStateException("cannot find resource"); + } + } + + public boolean isPropagated() { + return m_propagate; + } } Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java?rev=889163&r1=889162&r2=889163&view=diff ============================================================================== --- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java (original) +++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java Thu Dec 10 09:48:17 2009 @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.Dictionary; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -753,4 +754,14 @@ m_reference = null; m_serviceInstance = null; } + + public Dictionary getProperties() { + // TODO Auto-generated method stub + return null; + } + + public boolean isPropagated() { + // TODO Auto-generated method stub + return false; + } }