FELIX-4689: Added a new method in the component context which allows to invoke callbacks with a flag
that indicates if a warn message must be logged in case the callback is not found in any of the
specified object instances.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1732776 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java
index a00a02c..9b61c8b 100644
--- a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java
+++ b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java
@@ -115,7 +115,7 @@
public List<DependencyContext> getDependencies();
/**
- * Invoke a component callback method with a given dependency service instance
+ * Invokes a callback method on a given set of objects. An error is logged if the callback is not found in any of the object instances.
* @param instances the component instances
* @param methodName the method name
* @param signatures the method signatures (types)
@@ -124,6 +124,16 @@
public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters);
/**
+ * Invokes a callback method on a given set of objects.
+ * @param instances the component instances
+ * @param methodName the method name
+ * @param signatures the method signatures (types)
+ * @param parameters the method parameters
+ * @param logIfNotFound true if a warning message should be logged in case the callback is not found in any of the object instances.
+ */
+ public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters, boolean logIfNotFound);
+
+ /**
* Returns the component instances
* @return the component instances
*/
diff --git a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
index 866258e..15cafdb 100644
--- a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
+++ b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/ComponentImpl.java
@@ -556,10 +556,10 @@
// (Aspect or Adapter are not interested in user dependency callbacks)
if (logIfNotFound && ! callbackFound && ! (getInstance() instanceof AbstractDecorator)) {
if (m_logger == null) {
- System.out.println("Callback \"" + methodName + "\" not found on componnent instances "
+ System.out.println("\"" + methodName + "\" callback not found on componnent instances "
+ Arrays.toString(getInstances()));
} else {
- m_logger.log(LogService.LOG_ERROR, "Callback \"" + methodName + "\" callback not found on componnent instances "
+ m_logger.log(LogService.LOG_ERROR, "\"" + methodName + "\" callback not found on componnent instances "
+ Arrays.toString(getInstances()));
}
diff --git a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
index e07283c..c8eeff0 100644
--- a/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
+++ b/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/impl/FilterComponent.java
@@ -250,7 +250,11 @@
public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters) {
m_component.invokeCallbackMethod(instances, methodName, signatures, parameters);
}
-
+
+ public void invokeCallbackMethod(Object[] instances, String methodName, Class<?>[][] signatures, Object[][] parameters, boolean logIfNotFound) {
+ m_component.invokeCallbackMethod(instances, methodName, signatures, parameters, logIfNotFound);
+ }
+
public DependencyManager getDependencyManager() {
return m_component.getDependencyManager();
}