mirror of https://github.com/apache/nifi.git
NIFI-585:
- Addressing ambiguous method overload by renaming version that accepts the legacy annotation.
This commit is contained in:
parent
4d8a14ae97
commit
e98c074fc9
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue