You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2014/10/27 10:04:07 UTC
svn commit: r1634480 - in
/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm:
context/ impl/
Author: pderop
Date: Mon Oct 27 09:04:07 2014
New Revision: 1634480
URL: http://svn.apache.org/r1634480
Log:
FELIX-3914: Log unsuccessful field injections and non existing dependency callbacks.
Modified:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentScheduler.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FieldUtil.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/AbstractDependency.java Mon Oct 27 09:04:07 2014
@@ -18,6 +18,7 @@
*/
package org.apache.felix.dm.context;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Dictionary;
import java.util.Hashtable;
@@ -26,9 +27,13 @@ import java.util.Set;
import org.apache.felix.dm.ComponentDependencyDeclaration;
import org.apache.felix.dm.Dependency;
+import org.apache.felix.dm.impl.AbstractDecorator;
+import org.apache.felix.dm.impl.AdapterServiceImpl;
import org.apache.felix.dm.impl.EventImpl;
+import org.apache.felix.dm.impl.Logger;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
+import org.osgi.service.log.LogService;
/**
* Abstract class for implementing Dependencies
@@ -55,15 +60,21 @@ public abstract class AbstractDependency
protected final BundleContext m_context;
protected final Bundle m_bundle;
protected final static Dictionary<String, Object> EMPTY_PROPERTIES = new Hashtable<>(0);
-
+ protected final Logger m_logger;
+
public AbstractDependency() {
this(true, null);
}
public AbstractDependency(boolean autoConfig, BundleContext bc) {
+ this(autoConfig, bc, null);
+ }
+
+ public AbstractDependency(boolean autoConfig, BundleContext bc, Logger logger) {
m_autoConfig = autoConfig;
m_context = bc;
m_bundle = m_context != null ? m_context.getBundle() : null;
+ m_logger = logger;
}
public AbstractDependency(AbstractDependency<T> prototype) {
@@ -82,6 +93,7 @@ public abstract class AbstractDependency
m_propagateCallbackMethod = prototype.m_propagateCallbackMethod;
m_context = prototype.m_context;
m_bundle = prototype.m_bundle;
+ m_logger = prototype.m_logger;
}
// ----------------------- Dependency interface -----------------------------
@@ -121,21 +133,33 @@ public abstract class AbstractDependency
@Override
public void invokeAdd(Event e) {
if (m_add != null) {
- invoke(m_add, e);
+ // If the add callback is not found and if the component instance is not an abstract decorator, then
+ // log a warn message. (AbstractDecorator, like Aspect or Adapter are not interested in user dependency callbacks).
+ if (! invoke(m_add, e) && ! (m_component.getInstance() instanceof AbstractDecorator)) {
+ callbackNotFound(m_add);
+ }
}
}
@Override
public void invokeChange(Event e) {
if (m_change != null) {
- invoke(m_change, e);
+ // If the change callback is not found and if the component instance is not an abstract decorator, then
+ // log a warn message. (AbstractDecorator, like Aspect or Adapter are not interested in user dependency callbacks).
+ if (! invoke(m_change, e) && ! (m_component.getInstance() instanceof AbstractDecorator)) {
+ callbackNotFound(m_change);
+ }
}
}
@Override
public void invokeRemove(Event e) {
if (m_remove != null) {
- invoke(m_remove, e);
+ // If the remove callback is not found and if the component instance is not an abstract decorator, then
+ // log a warn message. (AbstractDecorator, like Aspect or Adapter are not interested in user dependency callbacks).
+ if (! invoke(m_remove, e) && ! (m_component.getInstance() instanceof AbstractDecorator)) {
+ callbackNotFound(m_remove);
+ }
}
}
@@ -287,13 +311,13 @@ public abstract class AbstractDependency
}
}
- public void invoke(String method, Event e, Object[] instances) {
+ public boolean invoke(String method, Event e, Object[] instances) {
// specific for this type of dependency
- m_component.invokeCallbackMethod(instances, method, new Class[][] { {} }, new Object[][] { {} });
+ return m_component.invokeCallbackMethod(instances, method, new Class[][] { {} }, new Object[][] { {} });
}
- public void invoke(String method, Event e) {
- invoke(method, e, getInstances());
+ public boolean invoke(String method, Event e) {
+ return invoke(method, e, getInstances());
}
@SuppressWarnings("unchecked")
@@ -409,4 +433,16 @@ public abstract class AbstractDependency
: ComponentDependencyDeclaration.STATE_OPTIONAL;
}
}
+
+ // -------------- Private methods ---------------------------------------------------
+
+ private void callbackNotFound(String callback) {
+ if (m_logger == null) {
+ System.out.println("Dependency \"" + callback + "\" callback not found on componnent instances "
+ + Arrays.toString(m_component.getInstances()));
+ } else {
+ m_logger.log(LogService.LOG_WARNING, "Dependency \"" + callback + "\" callback not found on componnent instances "
+ + Arrays.toString(m_component.getInstances()));
+ }
+ }
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java Mon Oct 27 09:04:07 2014
@@ -24,8 +24,7 @@ import java.util.concurrent.Executor;
import org.apache.felix.dm.Component;
-//TODO should this interface extend Component ?
-public interface ComponentContext {
+public interface ComponentContext extends Component {
public Executor getExecutor(); // shared between a component and its dependencies
public Component setThreadPool(Executor threadPool);
public void start();
@@ -36,7 +35,7 @@ public interface ComponentContext {
public void handleRemoved(DependencyContext dc, Event e);
public void handleSwapped(DependencyContext dc, Event event, Event newEvent);
public List<DependencyContext> getDependencies(); // for testing only...
- public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters);
+ public boolean invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters);
public Object[] getInstances();
public String getAutoConfigInstance(Class<?> clazz);
public boolean getAutoConfig(Class<?> clazz);
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/BundleDependencyImpl.java Mon Oct 27 09:04:07 2014
@@ -49,16 +49,13 @@ public class BundleDependencyImpl extend
private boolean m_propagate;
private Object m_propagateCallbackInstance;
private String m_propagateCallbackMethod;
- private final Logger m_logger;
public BundleDependencyImpl(BundleContext context, Logger logger) {
- super(true /* autoconfig */, context);
- m_logger = logger;
+ super(true /* autoconfig */, context, logger);
}
public BundleDependencyImpl(BundleDependencyImpl prototype) {
super(prototype);
- m_logger = prototype.m_logger;
m_stateMask = prototype.m_stateMask;
m_nullObject = prototype.m_nullObject;
m_bundleInstance = prototype.m_bundleInstance;
@@ -141,9 +138,9 @@ public class BundleDependencyImpl extend
}
@Override
- public void invoke(String method, Event e) {
+ public boolean invoke(String method, Event e) {
BundleEventImpl be = (BundleEventImpl) e;
- m_component.invokeCallbackMethod(getInstances(), method,
+ return m_component.invokeCallbackMethod(getInstances(), method,
new Class[][] {{Bundle.class}, {Object.class}, {}},
new Object[][] {{be.getBundle()}, {be.getBundle()}, {}}
);
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java Mon Oct 27 09:04:07 2014
@@ -28,6 +28,7 @@ import java.lang.reflect.InvocationTarge
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
@@ -628,9 +629,7 @@ public class ComponentImpl implements Co
if (m_context != null && m_serviceName != null) {
ServiceRegistrationImpl wrapper = new ServiceRegistrationImpl();
m_registration = wrapper;
- if (((Boolean) m_autoConfig.get(ServiceRegistration.class)).booleanValue()) {
- configureImplementation(ServiceRegistration.class, m_registration, (String) m_autoConfigInstance.get(ServiceRegistration.class));
- }
+ autoConfigureImplementation(ServiceRegistration.class, m_registration);
// service name can either be a string or an array of strings
ServiceRegistration registration;
@@ -664,7 +663,7 @@ public class ComponentImpl implements Co
m_registration.unregister();
}
} catch (IllegalStateException e) { /* Should we really log this ? */}
- configureImplementation(ServiceRegistration.class, NULL_REGISTRATION);
+ autoConfigureImplementation(ServiceRegistration.class, NULL_REGISTRATION);
m_registration = null;
}
}
@@ -751,18 +750,10 @@ public class ComponentImpl implements Co
}
// configure the bundle context
- if (((Boolean) m_autoConfig.get(BundleContext.class)).booleanValue()) {
- configureImplementation(BundleContext.class, m_context, (String) m_autoConfigInstance.get(BundleContext.class));
- }
- if (((Boolean) m_autoConfig.get(ServiceRegistration.class)).booleanValue()) {
- configureImplementation(ServiceRegistration.class, NULL_REGISTRATION, (String) m_autoConfigInstance.get(ServiceRegistration.class));
- }
- if (((Boolean) m_autoConfig.get(DependencyManager.class)).booleanValue()) {
- configureImplementation(DependencyManager.class, m_manager, (String) m_autoConfigInstance.get(DependencyManager.class));
- }
- if (((Boolean) m_autoConfig.get(Component.class)).booleanValue()) {
- configureImplementation(Component.class, this, (String) m_autoConfigInstance.get(Component.class));
- }
+ autoConfigureImplementation(BundleContext.class, m_context);
+ autoConfigureImplementation(ServiceRegistration.class, NULL_REGISTRATION);
+ autoConfigureImplementation(DependencyManager.class, m_manager);
+ autoConfigureImplementation(Component.class, this);
}
}
@@ -874,10 +865,12 @@ public class ComponentImpl implements Co
return getCompositionInstances();
}
- public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters) {
+ public boolean invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters) {
+ boolean callbackFound = false;
for (int i = 0; i < instances.length; i++) {
try {
InvocationUtil.invokeCallbackMethod(instances[i], methodName, signatures, parameters);
+ callbackFound |= true;
}
catch (NoSuchMethodException e) {
// if the method does not exist, ignore it
@@ -890,6 +883,7 @@ public class ComponentImpl implements Co
m_logger.log(Logger.LOG_ERROR, "Could not invoke '" + methodName + "'.", e);
}
}
+ return callbackFound;
}
private Object createInstance(Class<?> clazz) throws SecurityException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
@@ -932,27 +926,43 @@ public class ComponentImpl implements Co
return this;
}
- private void configureImplementation(Class<?> clazz, Object instance) {
- configureImplementation(clazz, instance, null);
+ private void autoConfigureImplementation(Class<?> clazz, Object instance) {
+ if (((Boolean) m_autoConfig.get(clazz)).booleanValue()) {
+ configureImplementation(clazz, instance, (String) m_autoConfigInstance.get(clazz));
+ }
}
-
- /**
+
+ /**
* Configure a field in the service implementation. The service implementation
* is searched for fields that have the same type as the class that was specified
* and for each of these fields, the specified instance is filled in.
*
* @param clazz the class to search for
- * @param inject the object to fill in the implementation class(es) field
+ * @param instance the object to fill in the implementation class(es) field
* @param instanceName the name of the instance to fill in, or <code>null</code> if not used
*/
- private void configureImplementation(Class<?> clazz, Object inject, String fieldName) {
+ private void configureImplementation(Class<?> clazz, Object instance, String fieldName) {
Object[] targets = getInstances();
- FieldUtil.injectField(targets, fieldName, clazz, inject, m_logger);
+ if (! FieldUtil.injectField(targets, fieldName, clazz, instance, m_logger) && fieldName != null) {
+ // If the target is an abstract decorator (i.e: an adapter, or an aspect), we must not log warnings
+ // if field has not been injected.
+ if (! (getInstance() instanceof AbstractDecorator)) {
+ m_logger.log(Logger.LOG_WARNING, "Could not inject " + instance + " to field \"" + fieldName
+ + "\" at any of the following component instances: " + Arrays.toString(targets));
+ }
+ }
}
private void configureImplementation(Class<?> clazz, DependencyContext dc, String fieldName) {
Object[] targets = getInstances();
- FieldUtil.injectDependencyField(targets, fieldName, clazz, dc, m_logger);
+ if (! FieldUtil.injectDependencyField(targets, fieldName, clazz, dc, m_logger) && fieldName != null) {
+ // If the target is an abstract decorator (i.e: an adapter, or an aspect), we must not log warnings
+ // if field has not been injected.
+ if (! (getInstance() instanceof AbstractDecorator)) {
+ m_logger.log(Logger.LOG_WARNING, "Could not inject dependency " + clazz.getName() + " to field \""
+ + fieldName + "\" at any of the following component instances: " + Arrays.toString(targets));
+ }
+ }
}
/**
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentScheduler.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentScheduler.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentScheduler.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentScheduler.java Mon Oct 27 09:04:07 2014
@@ -62,7 +62,7 @@ public class ComponentScheduler {
});
}
- protected void unbind(Executor threadPool) {
+ protected void unbind(ComponentExecutorFactory threadPool) {
m_componentExecutorFactory = null;
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ConfigurationDependencyImpl.java Mon Oct 27 09:04:07 2014
@@ -37,7 +37,6 @@ import org.osgi.service.cm.ManagedServic
public class ConfigurationDependencyImpl extends AbstractDependency<ConfigurationDependency> implements ConfigurationDependency, ManagedService {
private Dictionary<String, Object> m_settings;
- private final Logger m_logger;
private String m_pid;
private ServiceRegistration m_registration;
private MetaTypeProviderImpl m_metaType;
@@ -48,8 +47,7 @@ public class ConfigurationDependencyImpl
}
public ConfigurationDependencyImpl(BundleContext context, Logger logger) {
- super(false /* not autoconfig */, context);
- m_logger = logger;
+ super(false /* not autoconfig */, context, logger);
setRequired(true);
setCallback("updated");
}
@@ -57,7 +55,6 @@ public class ConfigurationDependencyImpl
public ConfigurationDependencyImpl(ConfigurationDependencyImpl prototype) {
super(prototype);
m_pid = prototype.m_pid;
- m_logger = prototype.m_logger;
m_metaType = prototype.m_metaType != null ? new MetaTypeProviderImpl(prototype.m_metaType, this, null) : null;
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FieldUtil.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FieldUtil.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FieldUtil.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FieldUtil.java Mon Oct 27 09:04:07 2014
@@ -41,13 +41,13 @@ public class FieldUtil {
* @param service the injected service
* @param logger the component logger.
*/
- public static void injectField(Object[] targets, String fieldName, Class<?> clazz, final Object service,
+ public static boolean injectField(Object[] targets, String fieldName, Class<?> clazz, final Object service,
final Logger logger)
{
if (service == null) {
- return;
+ return true; // TODO why service can be null ?
}
- mapField(true, clazz, targets, fieldName, logger, new FieldFunction() {
+ return mapField(true, clazz, targets, fieldName, logger, new FieldFunction() {
public void injectField(Field f, Object target) {
try {
f.setAccessible(true);
@@ -76,14 +76,14 @@ public class FieldUtil {
* @param service the injected service
* @param logger the component logger.
*/
- public static void injectDependencyField(Object[] targets, String fieldName, Class<?> clazz,
+ public static boolean injectDependencyField(Object[] targets, String fieldName, Class<?> clazz,
final DependencyContext dc, final Logger logger)
{
final Event event = dc.getService();
if (event == null) {
- return;
+ return true; // TODO check why event can be null
}
- mapField(false, clazz, targets, fieldName, logger, new FieldFunction() {
+ return mapField(false, clazz, targets, fieldName, logger, new FieldFunction() {
public void injectField(Field f, Object target) {
try {
f.setAccessible(true);
@@ -210,9 +210,10 @@ public class FieldUtil {
* @param func the callback used to notify when we find either a field with the same dependency service type, or
* with a "Collection" type, or with a "Map" type.
*/
- private static void mapField(boolean strict, Class<?> clazz, Object[] targets, String fieldName, Logger logger,
+ private static boolean mapField(boolean strict, Class<?> clazz, Object[] targets, String fieldName, Logger logger,
FieldFunction func)
{
+ boolean injected = false;
if (targets != null && clazz != null) {
for (int i = 0; i < targets.length; i++) {
Object target = targets[i];
@@ -230,19 +231,25 @@ public class FieldUtil {
if (fieldName == null) {
// Field type class must match injected service type
if (fieldType.equals(clazz)) {
+ injected = true;
func.injectField(field, target);
} else if (!strict && mayInjectToIterable(clazz, field, true)) {
+ injected = true;
func.injectIterableField(field, target);
} else if (!strict && mayInjectToMap(clazz, field, true)) {
+ injected = true;
func.injectMapField(field, target);
}
} else if (field.getName().equals(fieldName)) {
// Field type may be a superclass of the service type
if (fieldType.isAssignableFrom(clazz)) {
+ injected = true;
func.injectField(field, target);
} else if (!strict && mayInjectToIterable(clazz, field, false)) {
+ injected = true;
func.injectIterableField(field, target);
} else if (!strict && mayInjectToMap(clazz, field, false)) {
+ injected = true;
func.injectMapField(field, target);
} else {
logger.log(
@@ -257,6 +264,7 @@ public class FieldUtil {
}
}
}
+ return injected;
}
private static boolean mayInjectToIterable(Class<?> clazz, Field field, boolean strictClassEquality) {
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java Mon Oct 27 09:04:07 2014
@@ -228,8 +228,8 @@ public class FilterComponent implements
m_component.stop();
}
- public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters) {
- m_component.invokeCallbackMethod(instances, methodName, signatures, parameters);
+ public boolean invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters) {
+ return m_component.invokeCallbackMethod(instances, methodName, signatures, parameters);
}
public DependencyManager getDependencyManager() {
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ResourceDependencyImpl.java Mon Oct 27 09:04:07 2014
@@ -42,18 +42,15 @@ public class ResourceDependencyImpl exte
private volatile ServiceRegistration m_registration;
private volatile String m_resourceFilter;
private volatile URL m_trackedResource;
- private final Logger m_logger;
public ResourceDependencyImpl(BundleContext context, Logger logger) {
- super(true /* autoconfig */, context);
- m_logger = logger;
+ super(true /* autoconfig */, context, logger);
}
public ResourceDependencyImpl(ResourceDependencyImpl prototype) {
super(prototype);
m_resourceFilter = prototype.m_resourceFilter;
m_trackedResource = prototype.m_trackedResource;
- m_logger = prototype.m_logger;
}
@Override
@@ -119,12 +116,12 @@ public class ResourceDependencyImpl exte
}
@Override
- public void invoke(String method, Event e) {
+ public boolean invoke(String method, Event e) {
ResourceEventImpl re = (ResourceEventImpl) e;
URL serviceInstance = re.getResource();
Dictionary<?,?> resourceProperties = re.getProperties();
- m_component.invokeCallbackMethod(getInstances(), method,
+ return m_component.invokeCallbackMethod(getInstances(), method,
new Class[][] {
{ Component.class, URL.class, Dictionary.class },
{ Component.class, URL.class },
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java?rev=1634480&r1=1634479&r2=1634480&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ServiceDependencyImpl.java Mon Oct 27 09:04:07 2014
@@ -44,7 +44,6 @@ import org.osgi.service.log.LogService;
public class ServiceDependencyImpl extends AbstractDependency<ServiceDependency> implements ServiceDependency, ServiceTrackerCustomizer {
protected volatile ServiceTracker m_tracker;
- private final Logger m_logger;
protected String m_swap;
protected volatile Class<?> m_trackedServiceName;
private volatile String m_trackedServiceFilter;
@@ -139,13 +138,11 @@ public class ServiceDependencyImpl exten
}
public ServiceDependencyImpl(BundleContext ctx, Logger logger) {
- super(true /* autoconfig */, ctx);
- m_logger = logger;
+ super(true /* autoconfig */, ctx, logger);
}
public ServiceDependencyImpl(ServiceDependencyImpl prototype) {
super(prototype);
- m_logger = prototype.m_logger;
m_trackedServiceName = prototype.m_trackedServiceName;
m_nullObject = prototype.m_nullObject;
m_trackedServiceFilter = prototype.m_trackedServiceFilter;
@@ -255,11 +252,11 @@ public class ServiceDependencyImpl exten
}
@Override
- public void invoke(String method, Event e, Object[] instances) {
+ public boolean invoke(String method, Event e, Object[] instances) {
ServiceEventImpl se = (ServiceEventImpl) e;
ServicePropertiesMap propertiesMap = new ServicePropertiesMap(se.getReference());
Dictionary<?,?> properties = se.getProperties();
- m_component.invokeCallbackMethod(instances, method,
+ return m_component.invokeCallbackMethod(instances, method,
new Class[][]{
{Component.class, ServiceReference.class, m_trackedServiceName},
{Component.class, ServiceReference.class, Object.class},