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();
     }