NIFI-585:
- Addressing ambiguous method overload by renaming version that accepts the 
legacy annotation.

Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/e98c074f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/e98c074f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/e98c074f

Branch: refs/heads/master
Commit: e98c074fc9455cfb0011cdcab59865f3fe6b8946
Parents: 4d8a14a
Author: Matt Gilman <matt.c.gil...@gmail.com>
Authored: Mon May 4 14:52:02 2015 -0400
Committer: Matt Gilman <matt.c.gil...@gmail.com>
Committed: Mon May 4 14:52:02 2015 -0400

----------------------------------------------------------------------
 .../apache/nifi/controller/FlowController.java  |  2 +-
 .../scheduling/EventDrivenSchedulingAgent.java  |  2 +-
 .../scheduling/StandardProcessScheduler.java    |  8 +++---
 .../tasks/ContinuallyRunConnectableTask.java    |  2 +-
 .../tasks/ContinuallyRunProcessorTask.java      |  2 +-
 .../controller/tasks/ReportingTaskWrapper.java  |  2 +-
 .../nifi/groups/StandardProcessGroup.java       |  4 +--
 .../org/apache/nifi/util/ReflectionUtils.java   | 27 ++++++++++++++++----
 8 files changed, 33 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
index 6c655cb..2ffdd4e 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
@@ -822,7 +822,7 @@ public class FlowController implements EventAccess, 
ControllerServiceProvider, R
 
         if (firstTimeAdded) {
             try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                ReflectionUtils.invokeMethodsWithAnnotation(OnAdded.class, 
org.apache.nifi.processor.annotation.OnAdded.class, processor);
+                ReflectionUtils.invokeMethodsWithAnnotations(OnAdded.class, 
org.apache.nifi.processor.annotation.OnAdded.class, processor);
             } catch (final Exception e) {
                 
logRepository.removeObserver(StandardProcessorNode.BULLETIN_OBSERVER_ID);
                 throw new ComponentLifeCycleException("Failed to invoke 
@OnAdded methods of " + procNode.getProcessor(), e);

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/EventDrivenSchedulingAgent.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/EventDrivenSchedulingAgent.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/EventDrivenSchedulingAgent.java
index 77ae686..e5582ec 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/EventDrivenSchedulingAgent.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/EventDrivenSchedulingAgent.java
@@ -295,7 +295,7 @@ public class EventDrivenSchedulingAgent implements 
SchedulingAgent {
             } finally {
                 if (!scheduleState.isScheduled() && 
scheduleState.getActiveThreadCount() == 1 && 
scheduleState.mustCallOnStoppedMethods()) {
                     try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, worker, processContext);
+                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, worker, processContext);
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/StandardProcessScheduler.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/StandardProcessScheduler.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/StandardProcessScheduler.java
index ffa669d..7bcecf3 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/StandardProcessScheduler.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/StandardProcessScheduler.java
@@ -180,7 +180,7 @@ public final class StandardProcessScheduler implements 
ProcessScheduler {
 
                     try {
                         try (final NarCloseable x = 
NarCloseable.withNarLoader()) {
-                            
ReflectionUtils.invokeMethodsWithAnnotation(OnConfigured.class, 
OnScheduled.class, reportingTask, taskNode.getConfigurationContext());
+                            
ReflectionUtils.invokeMethodsWithAnnotations(OnScheduled.class, 
OnConfigured.class, reportingTask, taskNode.getConfigurationContext());
                         }
 
                         break;
@@ -227,7 +227,7 @@ public final class StandardProcessScheduler implements 
ProcessScheduler {
 
                 try {
                     try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                        
ReflectionUtils.invokeMethodsWithAnnotation(OnUnscheduled.class, 
org.apache.nifi.processor.annotation.OnUnscheduled.class, reportingTask, 
configurationContext);
+                        
ReflectionUtils.invokeMethodsWithAnnotations(OnUnscheduled.class, 
org.apache.nifi.processor.annotation.OnUnscheduled.class, reportingTask, 
configurationContext);
                     }
                 } catch (final Exception e) {
                     final Throwable cause = (e instanceof 
InvocationTargetException) ? e.getCause() : e;
@@ -247,7 +247,7 @@ public final class StandardProcessScheduler implements 
ProcessScheduler {
                 agent.unschedule(taskNode, scheduleState);
 
                 if (scheduleState.getActiveThreadCount() == 0 && 
scheduleState.mustCallOnStoppedMethods()) {
-                    
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, reportingTask, 
configurationContext);
+                    
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, reportingTask, 
configurationContext);
                 }
             }
         };
@@ -322,7 +322,7 @@ public final class StandardProcessScheduler implements 
ProcessScheduler {
                                 }
 
                                 final SchedulingContext schedulingContext = 
new StandardSchedulingContext(processContext, controllerServiceProvider, 
procNode);
-                                
ReflectionUtils.invokeMethodsWithAnnotation(OnScheduled.class, 
org.apache.nifi.processor.annotation.OnScheduled.class, 
procNode.getProcessor(), schedulingContext);
+                                
ReflectionUtils.invokeMethodsWithAnnotations(OnScheduled.class, 
org.apache.nifi.processor.annotation.OnScheduled.class, 
procNode.getProcessor(), schedulingContext);
 
                                 
getSchedulingAgent(procNode).schedule(procNode, scheduleState);
 

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunConnectableTask.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunConnectableTask.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunConnectableTask.java
index a824ad0..0380e6e 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunConnectableTask.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunConnectableTask.java
@@ -94,7 +94,7 @@ public class ContinuallyRunConnectableTask implements 
Callable<Boolean> {
             } finally {
                 if (!scheduleState.isScheduled() && 
scheduleState.getActiveThreadCount() == 1 && 
scheduleState.mustCallOnStoppedMethods()) {
                     try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, connectable, 
processContext);
+                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, connectable, 
processContext);
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunProcessorTask.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunProcessorTask.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunProcessorTask.java
index efa5814..7a85274 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunProcessorTask.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ContinuallyRunProcessorTask.java
@@ -168,7 +168,7 @@ public class ContinuallyRunProcessorTask implements 
Callable<Boolean> {
                 // invoke the OnStopped methods
                 if (!scheduleState.isScheduled() && 
scheduleState.getActiveThreadCount() == 1 && 
scheduleState.mustCallOnStoppedMethods()) {
                     try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, procNode.getProcessor(), 
processContext);
+                        
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class, procNode.getProcessor(), 
processContext);
                         flowController.heartbeat();
                     }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
index 5724bb4..77f60b5 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/tasks/ReportingTaskWrapper.java
@@ -52,7 +52,7 @@ public class ReportingTaskWrapper implements Runnable {
                 // invoke the OnStopped methods
                 if (!scheduleState.isScheduled() && 
scheduleState.getActiveThreadCount() == 1 && 
scheduleState.mustCallOnStoppedMethods()) {
                     try (final NarCloseable x = NarCloseable.withNarLoader()) {
-                        ReflectionUtils.quietlyInvokeMethodsWithAnnotation(
+                        ReflectionUtils.quietlyInvokeMethodsWithAnnotations(
                                 OnStopped.class, 
org.apache.nifi.processor.annotation.OnStopped.class,
                                 taskNode.getReportingTask(), 
taskNode.getConfigurationContext());
                     }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
index c7baef4..9fbfb5d 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/groups/StandardProcessGroup.java
@@ -332,7 +332,7 @@ public final class StandardProcessGroup implements 
ProcessGroup {
         for (final ProcessorNode node : procGroup.getProcessors()) {
             try (final NarCloseable x = NarCloseable.withNarLoader()) {
                 final StandardProcessContext processContext = new 
StandardProcessContext(node, controllerServiceProvider, encryptor);
-                
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnShutdown.class, 
org.apache.nifi.processor.annotation.OnShutdown.class, node.getProcessor(), 
processContext);
+                
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnShutdown.class, 
org.apache.nifi.processor.annotation.OnShutdown.class, node.getProcessor(), 
processContext);
             }
         }
 
@@ -672,7 +672,7 @@ public final class StandardProcessGroup implements 
ProcessGroup {
 
             try (final NarCloseable x = NarCloseable.withNarLoader()) {
                 final StandardProcessContext processContext = new 
StandardProcessContext(processor, controllerServiceProvider, encryptor);
-                
ReflectionUtils.quietlyInvokeMethodsWithAnnotation(OnRemoved.class, 
org.apache.nifi.processor.annotation.OnRemoved.class, processor.getProcessor(), 
processContext);
+                
ReflectionUtils.quietlyInvokeMethodsWithAnnotations(OnRemoved.class, 
org.apache.nifi.processor.annotation.OnRemoved.class, processor.getProcessor(), 
processContext);
             } catch (final Exception e) {
                 throw new ComponentLifeCycleException("Failed to invoke 
'OnRemoved' methods of " + processor, e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/e98c074f/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/util/ReflectionUtils.java
----------------------------------------------------------------------
diff --git 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/util/ReflectionUtils.java
 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/util/ReflectionUtils.java
index 5140e31..4588b9e 100644
--- 
a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/util/ReflectionUtils.java
+++ 
b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/util/ReflectionUtils.java
@@ -44,7 +44,7 @@ public class ReflectionUtils {
      */
     public static void invokeMethodsWithAnnotation(
             final Class<? extends Annotation> annotation, final Object 
instance, final Object... args) throws IllegalAccessException, 
IllegalArgumentException, InvocationTargetException {
-        invokeMethodsWithAnnotation(annotation, null, instance, args);
+        invokeMethodsWithAnnotations(annotation, null, instance, args);
     }
 
     /**
@@ -60,7 +60,7 @@ public class ReflectionUtils {
      * @throws IllegalArgumentException ex
      * @throws IllegalAccessException ex
      */
-    public static void invokeMethodsWithAnnotation(
+    public static void invokeMethodsWithAnnotations(
             final Class<? extends Annotation> preferredAnnotation, final 
Class<? extends Annotation> alternateAnnotation, final Object instance, final 
Object... args)
             throws IllegalAccessException, IllegalArgumentException, 
InvocationTargetException {
         final List<Class<? extends Annotation>> annotationClasses = new 
ArrayList<>(alternateAnnotation == null ? 1 : 2);
@@ -137,7 +137,7 @@ public class ReflectionUtils {
      * invoked; if <code>false</code> is returned, an error will have been 
logged.
      */
     public static boolean quietlyInvokeMethodsWithAnnotation(final Class<? 
extends Annotation> annotation, final Object instance, final Object... args) {
-        return quietlyInvokeMethodsWithAnnotation(annotation, null, instance, 
null, args);
+        return quietlyInvokeMethodsWithAnnotations(annotation, null, instance, 
null, args);
     }
 
     /**
@@ -153,7 +153,24 @@ public class ReflectionUtils {
      * invoked; if <code>false</code> is returned, an error will have been 
logged.
      */
     public static boolean quietlyInvokeMethodsWithAnnotation(final Class<? 
extends Annotation> annotation, final Object instance, final ProcessorLog 
logger, final Object... args) {
-        return quietlyInvokeMethodsWithAnnotation(annotation, null, instance, 
logger, args);
+        return quietlyInvokeMethodsWithAnnotations(annotation, null, instance, 
logger, args);
+    }
+
+    /**
+     * Invokes all methods on the given instance that have been annotated with 
the given preferredAnnotation and if no such method exists will invoke all 
methods on the given instance that have been
+     * annotated with the given alternateAnnotation, if any exists. If the 
signature of the method that is defined in <code>instance</code> uses 1 or more 
parameters, those parameters must be
+     * specified by the <code>args</code> parameter. However, if more 
arguments are supplied by the <code>args</code> parameter than needed, the 
extra arguments will be ignored.
+     *
+     * @param preferredAnnotation preferred
+     * @param alternateAnnotation alternate
+     * @param instance instance
+     * @param args args
+     * @return <code>true</code> if all appropriate methods were invoked and 
returned without throwing an Exception, <code>false</code> if one of the 
methods threw an Exception or could not be
+     * invoked; if <code>false</code> is returned, an error will have been 
logged.
+     */
+    public static boolean quietlyInvokeMethodsWithAnnotations(
+            final Class<? extends Annotation> preferredAnnotation, final 
Class<? extends Annotation> alternateAnnotation, final Object instance, final 
Object... args) {
+        return quietlyInvokeMethodsWithAnnotations(preferredAnnotation, 
alternateAnnotation, instance, null, args);
     }
 
     /**
@@ -169,7 +186,7 @@ public class ReflectionUtils {
      * @return <code>true</code> if all appropriate methods were invoked and 
returned without throwing an Exception, <code>false</code> if one of the 
methods threw an Exception or could not be
      * invoked; if <code>false</code> is returned, an error will have been 
logged.
      */
-    public static boolean quietlyInvokeMethodsWithAnnotation(
+    public static boolean quietlyInvokeMethodsWithAnnotations(
             final Class<? extends Annotation> preferredAnnotation, final 
Class<? extends Annotation> alternateAnnotation, final Object instance, final 
ProcessorLog logger, final Object... args) {
         final List<Class<? extends Annotation>> annotationClasses = new 
ArrayList<>(alternateAnnotation == null ? 1 : 2);
         annotationClasses.add(preferredAnnotation);

Reply via email to